CN116521234B - 一种处理器管线指令轮询调度的方法和装置 - Google Patents
一种处理器管线指令轮询调度的方法和装置 Download PDFInfo
- Publication number
- CN116521234B CN116521234B CN202310680774.2A CN202310680774A CN116521234B CN 116521234 B CN116521234 B CN 116521234B CN 202310680774 A CN202310680774 A CN 202310680774A CN 116521234 B CN116521234 B CN 116521234B
- Authority
- CN
- China
- Prior art keywords
- weight
- request message
- type column
- type
- request
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 80
- 230000008569 process Effects 0.000 abstract description 16
- 230000007246 mechanism Effects 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000037351 starvation Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及图形处理器技术领域,特别是涉及一种处理器管线指令轮询调度的方法和装置。主要包括:将接收到的请求消息加入相应类型的类型列中,根据请求消息接收情况对每个类型列的权重和阈值进行动态调整当一个类型列的权重大于阈值时,为该类型列分配连续的调度时间片,每个调度时间片对该类型列中的一个请求消息进行处理,直至该类型列的权重小于阈值。本发明根据消息接收的数量和速率调整权重和阈值,动态调整优先级和消息量大的请求的处理时间片,以更高效的调度机制获取更高的消息处理效率。
Description
技术领域
本发明涉及图形处理器技术领域,特别是涉及一种处理器管线指令轮询调度的方法和装置。
背景技术
GPU处理器在进行执行管线指令处理时,会用到多种调度算法,轮询调度(Round-Robin,简写为RR)算法是较常见的一种。RR算法旨在无差别的将处理器执行时间片平均分配给所有指令,该算法先将请求端发送的所有读写请求消息按照类型分类,每一种类型的请求消息保存在一个类型列中,所有的类型列构成一个二维数组形式的消息类型队列,以保存所有类型的请求消息。执行管线每收到一个新请求消息后,将请求消息放到对应类型的类型列中。每次处理轮询时,从第一个类型列中取出其中的第一个请求消息进行处理,同时删除该类型列中处理过的第一个请求消息;下一个周期继续调度消息类型队列中的下一个类型列,取出第一个请求消息进行处理,同时删除类型列中处理过的消息。按照上述方式,依次调度处理所有类型的请求消息。
如图1所示的消息类型队列中,包含多个类型列,每个类型列分别以Request_TypeA至Requrst_TypeN表示,每个类型列中包含一个或多个请求消息,例如,Requrst_TypeA类型列中,包含请求消息Requrst_TypeA_Msg1至Requrst_TypeA_Msgn。使用现有的RR算法进行调度时,在第一个调度周期中,取出Requrst_TypeA类型列中的Requrst_TypeA_Msg1进行处理,处理完成后删除消息类型队列中的Requrst_TypeA_Msg1;在下一个调度周期中,取出Requrst_TypeB类型列中的Requrst_TypeB_Msg1(图中未示出)进行处理,处理完成后删除消息类型队列中的Requrst_TypeB_Msg1。依照上述方式,依次调度处理所有类型的请求消息。由此可见,RR算法的调度效率较低,无法满足技术发展的需求。
发明内容
针对现有技术的以上缺陷或改进需求,本发明解决了现有调度机制中不同优先级、不同接收频率和不同响应需求的请求消息无法区分处理的问题。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种处理器管线指令轮询调度的方法,具体为:将接收到的请求消息加入相应类型的类型列中,根据请求消息接收情况对每个类型列的权重和阈值进行动态调整;当一个类型列的权重大于阈值时,为该类型列分配连续的调度时间片,每个调度时间片对该类型列中的一个请求消息进行处理,直至该类型列的权重小于阈值。
优选的,所述将接收到的请求消息加入相应类型的类型列中,具体包括:当接收到需要立即处理的请求消息时,将请求消息加入立即处理的类型列的尾部;当接收到不需要立即处理的请求消息,且请求消息中携带权重时,将请求消息按照请求消息的权重由高到低插入到相应类型的类型列中;当接收到不需要立即处理的请求消息,且请求消息中没有携带权重时,将请求消息按权重默认权重插入相应类型的类型列中。
优选的,所述根据请求消息接收情况对每个类型列的权重和阈值进行动态调整,权重动态调整具体包括:对于立即处理的类型列,接收请求消息时不更新类型列的权重;对于非立即处理的类型列,每一种类型的类型列收到一个请求消息后,根据请求消息的权重更新类型列的权重。
优选的,所述根据请求消息接收情况对每个类型列的权重和阈值进行动态调整,阈值动态调整具体包括:当一个周期内连续收到相同类型的请求消息时,在当前阈值基础上降低阈值,直到阈值降低为0;当一个周期内未收到某一类型请求消息时,在当前阈值基础上增加阈值。
优选的,所述根据请求消息接收情况对每个类型列的权重和阈值进行动态调整,还包括:根据类型列的数量动态维护一个权重队列,权重队列中的每个成员表示一个类型列的权重因子,其中,权重因子包含相应类型列的权重和阈值;当类型列收到一个请求消息后,根据请求消息的权重更新权重队列中类型列相应成员的权重和阈值。
优选的,所述每个调度时间片对该类型列中的一个请求消息进行处理,具体包括:对于立即处理的类型列,当类型列中存在请求消息时,立即按时间先后顺序依次处理请求消息,不更新类型列的权重,直至类型列中所有请求消息都处理完成;对于非立即处理的类型列,当立即处理的类型列中没有请求消息时,按权重从高向低依次处理请求消息,根据已处理请求消息的权重更新类型列的权重,直至类型列的权重小于阈值。
优选的,所述立即按时间先后顺序依次处理请求消息,具体包括:由类型列头开始,按请求消息接收的时间顺序从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端;当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
优选的,所述按权重从高向低依次处理请求消息,具体包括:由类型列头开始,按请求消息的权重大小从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端;当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
优选的,所述方法还包括:在请求端,为每个请求消息设置权重初始值,权重初始值根据请求消息级别依次增加,权重越大请求消息处理的优先级越高。
另一方面,本发明提供了一种处理器管线指令轮询调度的装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的处理器管线指令轮询调度的方法。
与现有技术相比,本发明实施例的有益效果在于:本发明实施例提供的方法,在RR轮询算法中增加权重和阈值,根据消息接收的数量和速率调整权重和阈值,动态调整优先级和消息量大的请求的处理时间片,并在优选方案中对立即处理的请求消息和非立即处理的请求消息分别进行处理,以更高效的调度机制获取更高的消息处理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有RR调度算法的消息类型队列结构示意图;
图2为本发明实施例提供的一种处理器管线指令轮询调度的方法流程图;
图3为本发明实施例提供的RR调度算法的消息类型队列结构示意图;
图4为本发明实施例提供的将接收到的请求消息加入相应类型的类型列中的流程图;
图5为本发明实施例提供的权重动态调整的流程图;
图6为本发明实施例提供的RR调度算法中队列权重之和的计算示意图;
图7为本发明实施例提供的阈值动态调整的流程图;
图8为本发明实施例提供的将权重和阈值的动态调整映射到权重队列中的流程图;
图9为本发明实施例提供的RR调度算法的权重队列结构示意图;
图10为本发明实施例提供的对各类型列中的一个请求消息进行处理的流程图;
图11为本发明实施例提供的RR调度算法的权重队列结构更新方式示意图;
图12为本发明实施例提供的按时间先后顺序依次处理请求消息的流程图;
图13为本发明实施例提供的按权重从高向低依次处理请求消息的流程图;
图14为本发明实施例提供的基于用户历史操作习惯对权重初始值进行调整的流程图;
图15为本发明实施例提供的一种处理器管线指令轮询调度的装置结构示意图;
其中,附图标记如下:
11:处理器;12:存储器。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
现有技术中,RR算法的调度机制存在三个缺陷,一是没有考虑请求消息优先级,对所有请求无差别对待;二是没有考虑消息请求数量,对于数量多的类型没有得到更多的处理时间;三是无法响应需要立即执行的请求。
为了对不同优先级、不同接收频率和不同响应需求的请求消息进行分类调度,本发明实施例提供了一种处理器管线指令轮询调度的方法。
如图2所示,请求消息的响应端,即RR调度算法的执行端进行,在收到执行管线请求后,做如下处理。
步骤101:将接收到的请求消息加入相应类型的类型列中,根据请求消息接收情况对每个类型列的权重和阈值进行动态调整。
为了对不同优先级、不同接收频率、不同响应需求的请求消息进行分类调度,在一些实施方式中,为每个类型列引入了权重(Weight_Total)和阈值(Threshold)。其中,权重代表该类型所有请求消息的权重总和;阈值控制该类型列的调度开始时间。当该类型列的权重小于阈值时,不对该类型列中的请求消息进行调度处理;当该类型列的权重超过阈值时,开始对该类型列中的请求消息进行连续调度处理,降低权重直至阈值大于权重,再调度处理其他类型的消息。通过动态调整权重和阈值,可以对每个类型列的调度开始时间进行动态控制。在具体实施中,可以根据每种类型请求消息的处理需求对每个类型列的阈值进行配置。
图3所示为增加了权重后的消息类型队列示意图,与图1中现有技术的消息类型队列相比,每个请求消息中增加了权重(Weight)信息,例如:请求类型0(Requrst_Type0)类型列中的权重0(Weight0)、请求类型A(Requrst_TypeA)类型列中的权重m(Weight m)至权重n(Weight n)、请求类型N(Requrst_TypeN)类型列中的权重x(Weight x)至权重y(Weight y)等,以每个类型列中所有请求消息的权重之和作为该类型列的权重。
可以理解的是,请求消息的权重可以由请求端根据实际需要设定。具体地:在请求端,为每个请求消息设置权重初始值,权重初始值根据请求消息级别依次增加,权重越大则请求消息处理的优先级越高。请求端在发送请求的时候可以选择增加权重初始值。初始值根据消息级别依次增加,数字越大优先级越高,在一些实施方式中:每条请求消息的权重最低为1,最高为9。权重设置为0代表需要立即响应的及时请求消息。可以理解的是,某些实施场景中,如果不支持使用权重对需要立即处理的消息和不需要立即处理的消息进行区分,也可以在响应端指定消息类型以区分需要立即处理的消息。在另一些场景中,为了避免对请求端的软硬件进行调整,本实施例中的方法也可以支持请求端不设置每个请求消息的权重,将所有请求消息按照类型设置为默认权重,完全依赖于响应调度端对权重进行动态调整。
步骤102:当一个类型列的权重大于阈值时,为该类型列分配连续的调度时间片,每个调度时间片对该类型列中的一个请求消息进行处理,直至该类型列的权重小于阈值。
为了避免消息阻塞,尽快完成权重超过阈值的类型列中请求消息的调度,在一些实施方式中,为每个需要进行调度的类型列分配连续的调度时间片进行请求消息的处理。某个类型列的权重超过阈值时,需要连续给该类型列分配调度时间片,连续调度出请求消息进行处理,直到该类型列的权重降低到阈值以内后停止本类型列的处理,转为调度处理其他类型列的消息。
进一步地,为了对于需要立即处理的请求消息及时进行处理,可以将该类型的请求消息单独设置一个类型列,该类型的请求消息对应的类型列的阈值为小于请求消息的最低权重的数值,以便接收到请求后立刻处理。例如:需要立即处理的请求消息的权重为0,需要立即处理的类型列的阈值为-1,该场景中,只要该类型列接收到请求消息,类型列的权重必然大于阈值,此时,立刻对该类型列中的请求消息进行调度,以及时处理需要立即处理的请求消息。
经过本实施例中提供的步骤101至步骤102后,通过动态调整类型列的权重以动态管理每个类型列的处理优先级,并使用连续的调度时间片对请求消息进行调度处理,以调整不同优先级请求的处理次序,获得更多的处理时间。下文中,为了便于描述,将本实施例提供的加入了权重和立即处理类型列的调度方法称作RR_New调度,以区分现有的RR算法。
如图4所示,在接收到请求消息时,可以通过以下方式将接收到的请求消息加入相应类型的类型列中。
步骤201:当接收到需要立即处理的请求消息时,将请求消息加入立即处理的类型列的尾部。
在RR轮询消息类型队列头增加一个类型列,该类型列中请求消息的类型不同于现有的所有消息,表示需要立即执行的执行管线请求。在一些实施方式中,以Type0表示需要立即执行的消息类型,相应的,在图3中,Requrst_Type0队列为需要立即执行的类型列。接收到需要立即处理的请求消息后,按接收的先后顺序将请求消息依次加入该类型列。例如,Requrst_Type0类型列中,请求类型0的消息1(Requrst_Type0_Msg1)至请求类型0的消息n(Requrst_Type0_Msgn)按照接收到的时间依次排序。
步骤202:当接收到不需要立即处理的请求消息,且请求消息中携带权重时,将请求消息按照请求消息的权重由高到低插入到相应类型的类型列中。
在一些实施方式中,当接收到不需要立即处理的消息时,根据权重值由高到底按序插入到对应请求类型队列中,队列头为权重值最大请求。例如,在图3中,Requrst_TypeA类型列中,Requrst_TypeA_Msg1至Requrst_TypeA_Msgn的权重由高到低排列,Requrst_TypeA_Msg1的权重Weight m为本类型列中消息权重的最大值,Requrst_TypeA_Msgn的权重Weight n为本类型列中消息权重的最小值。
步骤203:当接收到不需要立即处理的请求消息,且请求消息中没有携带权重时,将请求消息按权重默认权重插入相应类型的类型列中。
在一些实施方式中,可能存在没有携带权重值的请求消息,可以在响应端根据需要为这些请求消息赋予指定的默认权重,再按赋予的权重插入相应的类型列中,例如,将请求消息按权重为1插入相应的类型列中。可以理解的是,默认权重的取值可根据实际需求进行设置,本发明对此不做限制。
经过本实施例中提供的步骤201至步骤202后,即可将接收到的请求消息加入相应的类型列中,以便后续根据类型和权重依次处理。
在一些实施方式中,将请求消息插入相应的类型列后,还需要对每个类型列的权重和阈值进行动态改变,从而调整类型列的调度时间和顺序。
如图5所示,根据请求消息接收情况对每个类型列的权重和阈值进行动态调整时,权重动态调整包括以下过程。
步骤301:对于立即处理的类型列,接收请求消息时不更新类型列的权重。
对于立即处理的类型列,例如Requrst_Type0,不更新权重。为了便于计算处理,可以将该类型列的权重设置为常量,不更新该类型列的Weight。例如,将权重始终设置为0。每收到一个需要立即处理的请求消息后,将其插入到该类型列的尾部,类型列的长度加一,即:Lenth(new) = Lenth(old) +1。其中,Lenth(new)为插入请求消息前的队列长度,Lenth(old)为插入请求消息后的队列长度。
步骤302:对于非立即处理的类型列,每一种类型的类型列收到一个请求消息后,根据请求消息的权重更新类型列的权重。
对于不需要立即处理的类型列,每一种类型的类型列收到一个请求消息后,需要更新队列的权重,在具体实施中,可以根据实际需要确定类型列的权重和消息权重之间的关系。例如,在某个实施例中,以类型列中收到的所有消息权重之和作为类型列的权重,具体计算方式为:插入请求消息后类型列的新权重 = 插入请求消息前类型列的旧权重+插入的请求消息的权重,即:Weight_Total(new) = Weight_Total(old) + Insert_Req_Msg_Weight,其中,Weight_Total(new)为插入请求消息后类型列的新权重,Weight_Total(old)为插入请求消息前类型列的旧权重,Insert_Req_Msg_Weight为插入的请求消息的权重。另一方面,类型列的长度也需要加一,即:Lenth(new) = Lenth(old) +1。其中,Lenth(new)为插入请求消息前的队列长度,Lenth(old)为插入请求消息后的队列长度。由于每个类型列的权重值通过累加进行计算,在连续收到同一类型消息时,该类型列的Weight_Total也会随着连续收到消息而急速增高,快速超过类型列的阈值,使得该类型列能够更快得到处理。如图6所示,类型列Requrst_TypeA的Weight_Total(old)为Requrst_TypeA_Msg1至Requrst_TypeA_Msgn的权重之和,当队列中插入请求消息Requrst_TypeA_Msgn+1后,新权重为Weight_Total(old)再增加Requrst_TypeA_Msgn+1的权重。
经过本实施例中提供的步骤301至步骤302后,即可根据接收到的请求消息对类型列的权重进行动态调整,以便后续根据权重和阈值调度处理各类型列中的请求消息。可以理解的是,根据接收到的请求消息对类型列的权重进行动态调整的具体方法可根据实际需要进行设置,上述权重计算公式仅为示例性的给出,本发明对此不做限制。
进一步地,为了避免某一类请求消息出现拥塞,接收越多越快的请求消息应该被越优先、越连续地处理。本实施例提供的方法中,还可以动态调整类型列的阈值,以实现越饥饿的消息类型越优先处理,从而提高消息处理效率。如图7所示,阈值动态调整的具体过程如下。
步骤401:当一个周期内连续收到相同类型的请求消息时,在当前阈值基础上降低阈值,直到阈值降低为0。
在一些实施方式中,连续收到的同一类型的请求消息越多,表示该类请求消息越饥饿。每次接收到某种类型的请求消息后,降低相应类型列的阈值。例如,将类型列的阈值默认为9,当单个周期连续收到相同类型的消息时,阈值降低(例如减1),直到阈值降低为0。使用该方式进行自适应阈值调整,单个周期内连续收到的同一类型的消息越快,其对应类型列的阈值会降低越快,该类消息会越早被连续调度处理,也会得到连续的调度处理时间片越多。
步骤402:当一个周期内未收到某一类型请求消息时,在当前阈值基础上增加阈值。
相对地,当一个周期内如果某一类消息没有收到任何消息,阈值反向增加提高,以降低该类请求消息处理的优先级。
经过本实施例中提供的步骤401至步骤402后,即可根据接收到的请求消息对类型列的阈值进行动态调整,以便后续根据权重和阈值调度处理各类型列中的请求消息。
在一些实施方式中,为了避免阈值调整影响需要立即处理的请求消息的处理优先级,需要立即处理的类型列的调度开始时间不受阈值限制,可以将该类型列的阈值设置为常量-1,表示该类型列的阈值无效,不进行运算。
在一些实施方式中,为了便于对每个类型列的阈值和权重进行管理,可以使用权重队列对每个类型列的阈值和权重进行管理。
如图8所示,可以使用以下方式,将权重和阈值的动态调整映射到权重队列中。
步骤501:根据类型列的数量动态维护一个权重队列,权重队列中的每个成员表示一个类型列的权重因子,其中,权重因子包含相应类型列的权重和阈值。
如图9所示,根据消息类型的数量动态维护一个权重队列(Weight_List),权重队列中的成员与消息类型队列(RR_List)的类型列一一对应,权重队列的每个成员包含消息类型队列中每个类型列的权重因子三个元素:权重(Weight_Total),消息长度(Lenth)和阈值(Threshold),权重队列中的每个成员和消息类型队列中的每个类型列一一对应,所以,对消息类型队列的RR调度,可以映射到对Weight_List的调度。
步骤502:当类型列收到一个请求消息后,根据请求消息的权重更新权重队列中类型列相应成员的权重和阈值。
在类型列接收到请求消息后,可以使用步骤301至步骤302以及步骤401至步骤402中的方式,根据接收的请求消息的权重(Weight)和消息数量(Lenth),以及接收消息的频率,动态调整类型列对应的成员中类型列的权重(Weight_Total)和阈值(Threshold),在进行调度时,根据权重队列中记录的权重和阈值判断该类型列是否需要进行调度。
经过本实施例中提供的步骤501至步骤502后,即可将类型列的权重和阈值映射至权重队列中,以便后续根据权重和阈值调度处理各类型列中的请求消息。
为了提高处理效率,在一个类型列开始调度后,使用连续的时间片对该列的请求消息进行处理。
如图10示,每个调度时间片对该类型列中的一个请求消息进行处理。
步骤601:对于立即处理的类型列,当类型列中存在请求消息时,立即按时间先后顺序依次处理请求消息,不更新类型列的权重,直至类型列中所有请求消息都处理完成。
对于立即处理的类型列,即Requrst_Type0,由于类型列中的请求消息按照时间顺序依次插入,因此仅需按照队列中的成员顺序从前向后依次调度,即可按时间先后顺序处理所有消息。当调度出请求消息并处理后,将其删除,类型列的长度减一。同时,类型列不更新Weight,始终保持固定常量,例如始终为0。
步骤602:对于非立即处理的类型列,当立即处理的类型列中没有请求消息时,按权重从高向低依次处理请求消息,根据已处理请求消息的权重更新类型列的权重,直至类型列的权重小于阈值。
对于非立即处理的类型列,即Requrst_TypeA至Requrst_TypeN,由于类型列中的请求消息按照权重从高到低插入类型列中,因此仅需按照类型列中的成员顺序从前向后依次调度,即可按权重高低顺序处理类型列中的请求消息,将其发送给消息处理端,删除消息,同时,如图11所示,更新类型列的Weight。
经过本实施例中提供的步骤601至步骤602后,即可完成请求消息的调度处理。
在一些实施方式中,如图12所示,步骤601中立即按时间先后顺序依次处理请求消息的过程如下。
步骤701:由类型列头开始,按请求消息接收的时间顺序从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端。
每个RR_New调度循环开始,首先处理立即消息。如果立即消息对应的类型列Request_Type0的长度不为0,从前向后按时间先后依次调度处理Request_Type0队列中消息所有消息。
步骤702:当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
将调度出的请求消息处理完成后,删除该条消息,同时更新及时消息队列Weight_List对应项Lenth信息,即:Lenth(new) = Lenth(old) – 1。
经过本实施例中提供的步骤701至步骤702后,即可完成需要立即处理的请求消息的调度处理。
在一些实施方式中,为了确保需要立即处理的消息优先处理,只有改类型列中的请求消息全部处理完成,即Request_Type0的长度为0后,再调度处理其他类型的请求消息。本实施例提供的方法中,对于不需要立即处理的类型列,权重越高的类型列需要越优先处理,因此,需要选出动态调整后Weight_Total值最高的类型列首先进行调度,再根据类型列的权重高低依次调度其它的类型列。若一个类型列中不存在请求消息,即类型列的Lenth为0,该类型列不参与调度。
如图13所示,步骤602中按权重从高向低依次处理请求消息的过程如下。
步骤801:由队列头开始,按请求消息的权重大小从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端。
对于非立即处理的类型列,如果权重大于阈值需要进行连续调度,降低权重值直到小于阈值。
步骤802:当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
在整个调度过程中,阈值和权重根据前述方法进行动态调整,其中,阈值根据消息的接收情况即时动态调整,权重根据消息的加入和删除即时动态调整。进一步地,在使用权重队列的场景中,每调度出一条消息后,从对应消息队列中删除该消息,同时更新权重队列Weight_List中对应项权重值和消息长度,所以权重和阈值将根据处理消息进行动态调整,即:Weight_List[TypeX].Lenth(new) =Weight_List[TypeX].Lenth(old) – 1。
Weight_List[TypeX].Weight(new) = Weight_List[TypeX]. Weight (old) –Delet_Req_MsgX_Weight。
经过本实施例中提供的步骤801至步骤802后,即可完成不需要立即处理的请求消息的调度处理。
进一步地,在某些具体实施场景中,步骤101中,在发送端为每个请求消息设置权重初始值时,如图14所示,还可以基于用户历史操作习惯对权重初始值进行调整,以对可能出现的调度情况进行预测。
步骤901:对用户历史操作数据进行统计,获取用户历史操作中不同时间段发送的请求消息数量。
在用户日常使用中,对于应用软件的使用可能具有一定时间规律,例如:某个用户工作日白天时间段较多使用文字处理软件,晚间时间段较多使用视频播放软件。对于每一类应用软件,需要处理的不同类型请求消息的比例不同。因此,对每个时间段内的请求消息数量进行统计分析,以获取不同类型的请求消息和时间的关系,以便对某个时间段可能大量出现的请求消息进行预测和优先处理。在具体实施中,请求消息数量的统计可以使用CPU中完成,也可以在GPU中使用相应的计数器完成。
步骤902:根据不同时间段请求消息的数量,对当前时间段请求消息的发送频率进行预测。
在某个时间段内,请求消息数量越多,表明该时间段内请求消息的发送频率越高。在一些实施方式中,可以直接根据统计结果,得到之后时间段内发送频率较高的消息类型;也可以根据在应用程序开启时,根据应用程序的类型得到之后时间段内发送频率较高的消息类型;还可以根据时间、应用软件类型、请求消息类型之间的关系建立神经网络模型,通过神经网络对之后时间段内发送频率较高的消息类型进行预测。
步骤903:发送端根据当前时间段请求消息的发送频率,对请求消息的初始权重进行调整。
某个时间段内,请求消息的发送频率越高,表明该类型请求消息的处理压力越大,此时就需要提高该类型请求消息的优先级。本实施例提供的方法中,可以通过调整请求消息的初始权重值来调整每个请求消息的优先级。在某个时间段中,若请求消息的发送频率较高,在该时间段即将开始时,逐渐提高该类型每个请求消息的初始权重值,以尽量减少队列中等待的消息,在该时间段即将结束时,逐渐降低该类型每个请求消息的初始权重值,以平衡其它类型请求消息的处理效率。进一步地,若某类请求消息的发送频率和时间点之间存在特定的关系函数或关系曲线,可以按照关系函数或关系曲线中发送频率的变化趋势,对该类型消息的初始权重值进行设置。
经过本实施例中提供的步骤901至步骤903后,即可在发送端根据消息可能的发送频率对权重进行预判性调整,以减少请求消息拥塞。
本实施例提供的处理器管线指令轮询调度的方法,具有以下有益效果:在现有的RR调度算法中增加权重动态调整,使得权重大的类型列可优先被调度;在现有的RR调度算法中增加阈值动态调整,收到消息越多越快越容易被处理;在现有的RR调度算法中增加立即消息处理机制,使得需要立即处理的请求消息能够立即进行处理;使用连续的时间片进行调度处理,快速对饥饿队列中的请求消息进行处理;使用权重队列实现请求消息队列和权重属性队列相互映射机制,便于对权重和阈值进行管理。
在上述实施例提供的处理器管线指令轮询调度的方法的基础上,本发明还提供了一种可用于实现上述方法的处理器管线指令轮询调度的装置,如图15所示,是本发明实施例的装置架构示意图。本实施例的处理器管线指令轮询调度的装置包括一个或多个处理器11以及存储器12。其中,图15中以一个处理器11为例。
处理器11和存储器12可以通过总线或者其他方式连接,图15中以通过总线连接为例。
存储器12作为一种处理器管线指令轮询调度方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如上述实施例中的处理器管线指令轮询调度方法。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行处理器管线指令轮询调度的装置的各种功能应用以及数据处理,即实现上述实施例的处理器管线指令轮询调度的方法。
存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至处理器11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器12中,当被一个或者多个处理器11执行时,执行上述实施例中的处理器管线指令轮询调度的方法,例如,执行以上描述的图2、图4和图5所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(Read Only Memory,简写为:ROM)、随机存取存储器(Random AccessMemory,简写为:RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种处理器管线指令轮询调度的方法,其特征在于,包括:
将接收到的请求消息加入相应类型的类型列中,根据请求消息接收情况对每个类型列的权重和阈值进行动态调整;其中,所述类型列中包含立即处理的类型列,立即处理的类型列的阈值不进行动态调整;其中,所述将接收到的请求消息加入相应类型的类型列中包括:当接收到需要立即处理的请求消息时,将请求消息加入立即处理的类型列的尾部;当接收到不需要立即处理的请求消息,且请求消息中携带权重时,将请求消息按照请求消息的权重由高到低插入到相应类型的类型列中;当接收到不需要立即处理的请求消息,且请求消息中没有携带权重时,将请求消息按默认权重插入相应类型的类型列中;其中,所述根据请求消息接收情况对每个类型列的权重和阈值进行动态调整包括:对于立即处理的类型列,接收请求消息时不更新类型列的权重;对于非立即处理的类型列,每一种类型的类型列收到一个请求消息后,根据请求消息的权重更新类型列的权重;当一个周期内连续收到相同类型的请求消息时,在当前阈值基础上降低阈值,直到阈值降低为0;当一个周期内未收到某一类型请求消息时,在当前阈值基础上增加阈值;
当一个类型列的权重大于阈值时,为该类型列分配连续的调度时间片,每个调度时间片对该类型列中的一个请求消息进行处理,直至该类型列的权重小于阈值;其中,立即处理的类型列的调度开始时间不受阈值限制;其中,所述每个调度时间片对该类型列中的一个请求消息进行处理包括:对于立即处理的类型列,当类型列中存在请求消息时,立即按时间先后顺序依次处理请求消息,不更新类型列的权重,直至类型列中所有请求消息都处理完成;对于非立即处理的类型列,当立即处理的类型列中没有请求消息时,按权重从高向低依次处理请求消息,根据已处理请求消息的权重更新类型列的权重,直至类型列的权重小于阈值。
2.根据权利要求1所述的处理器管线指令轮询调度的方法,其特征在于,所述根据请求消息接收情况对每个类型列的权重和阈值进行动态调整还包括:
根据类型列的数量动态维护一个权重队列,权重队列中的每个成员表示一个类型列的权重因子,其中,权重因子包含相应类型列的权重和阈值;
当类型列收到一个请求消息后,根据请求消息的权重更新权重队列中类型列相应成员的权重和阈值。
3.根据权利要求1所述的处理器管线指令轮询调度的方法,其特征在于,所述立即按时间先后顺序依次处理请求消息包括:
由类型列头开始,按请求消息接收的时间顺序从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端;
当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
4.根据权利要求1所述的处理器管线指令轮询调度的方法,其特征在于,所述按权重从高向低依次处理请求消息包括:
由类型列头开始,按请求消息的权重大小从前往后依次调度出类型列中的每个请求消息,将调度出的请求消息发往处理端;
当调度出的请求消息处理完成后,在类型列中删除该条请求消息,同时更新类型列的权重。
5.根据权利要求1所述的处理器管线指令轮询调度的方法,其特征在于,所述方法还包括:
在请求端,为每个请求消息设置权重初始值,权重初始值根据请求消息级别依次增加,权重越大请求消息处理的优先级越高。
6.一种处理器管线指令轮询调度的装置,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1至5中任一项所述的处理器管线指令轮询调度的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680774.2A CN116521234B (zh) | 2023-06-09 | 2023-06-09 | 一种处理器管线指令轮询调度的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680774.2A CN116521234B (zh) | 2023-06-09 | 2023-06-09 | 一种处理器管线指令轮询调度的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521234A CN116521234A (zh) | 2023-08-01 |
CN116521234B true CN116521234B (zh) | 2023-12-01 |
Family
ID=87399581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310680774.2A Active CN116521234B (zh) | 2023-06-09 | 2023-06-09 | 一种处理器管线指令轮询调度的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521234B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2946462B1 (ja) * | 1998-03-10 | 1999-09-06 | 株式会社超高速ネットワーク・コンピュータ技術研究所 | パケット・スケジューリング制御方法 |
CN101834786A (zh) * | 2010-04-15 | 2010-09-15 | 华为技术有限公司 | 队列调度的方法和装置 |
CN102148762A (zh) * | 2011-04-28 | 2011-08-10 | 合肥工业大学 | 一种用于CAN-FlexRay网关的混合调度方法 |
CN104869079A (zh) * | 2015-06-11 | 2015-08-26 | 烽火通信科技股份有限公司 | 基于动态加权循环法的队列调度方法及装置 |
CN107733689A (zh) * | 2017-09-15 | 2018-02-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于优先级的动态加权轮询调度策略方法 |
US10303530B1 (en) * | 2016-06-14 | 2019-05-28 | Chicago Stock Exchange, Inc. | System and method for sequentially interleaving undelayed and intentionally delayed executable instructions |
CN111277447A (zh) * | 2020-05-08 | 2020-06-12 | 北京东方通科技股份有限公司 | 对多通道链路进行权重排序的方法及系统 |
CN112214299A (zh) * | 2020-09-30 | 2021-01-12 | 深圳云天励飞技术股份有限公司 | 多核处理器及其任务调度方法和装置 |
CN115766612A (zh) * | 2022-09-07 | 2023-03-07 | 烽火通信科技股份有限公司 | 一种基于权重转换概率的调度方法及相应的装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9065779B2 (en) * | 2009-06-12 | 2015-06-23 | Wi-Lan Labs, Inc. | Systems and methods for prioritizing and scheduling packets in a communication network |
-
2023
- 2023-06-09 CN CN202310680774.2A patent/CN116521234B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2946462B1 (ja) * | 1998-03-10 | 1999-09-06 | 株式会社超高速ネットワーク・コンピュータ技術研究所 | パケット・スケジューリング制御方法 |
CN101834786A (zh) * | 2010-04-15 | 2010-09-15 | 华为技术有限公司 | 队列调度的方法和装置 |
CN102148762A (zh) * | 2011-04-28 | 2011-08-10 | 合肥工业大学 | 一种用于CAN-FlexRay网关的混合调度方法 |
CN104869079A (zh) * | 2015-06-11 | 2015-08-26 | 烽火通信科技股份有限公司 | 基于动态加权循环法的队列调度方法及装置 |
US10303530B1 (en) * | 2016-06-14 | 2019-05-28 | Chicago Stock Exchange, Inc. | System and method for sequentially interleaving undelayed and intentionally delayed executable instructions |
CN107733689A (zh) * | 2017-09-15 | 2018-02-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于优先级的动态加权轮询调度策略方法 |
CN111277447A (zh) * | 2020-05-08 | 2020-06-12 | 北京东方通科技股份有限公司 | 对多通道链路进行权重排序的方法及系统 |
CN112214299A (zh) * | 2020-09-30 | 2021-01-12 | 深圳云天励飞技术股份有限公司 | 多核处理器及其任务调度方法和装置 |
CN115766612A (zh) * | 2022-09-07 | 2023-03-07 | 烽火通信科技股份有限公司 | 一种基于权重转换概率的调度方法及相应的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116521234A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107579926B (zh) | 基于令牌桶算法的Ceph云存储系统的QoS设置方法 | |
CN109002358B (zh) | 基于深度强化学习的移动终端软件自适应优化调度方法 | |
JP4723260B2 (ja) | ソースデバイスに対するリクエストをスケジューリングする装置及び方法 | |
CN109697122B (zh) | 任务处理方法、设备及计算机存储介质 | |
US8392633B2 (en) | Scheduling requesters of a shared storage resource | |
US20070156955A1 (en) | Method and apparatus for queuing disk drive access requests | |
CN111400022A (zh) | 一种资源调度方法、装置及电子设备 | |
CN111767134A (zh) | 一种多任务动态资源调度方法 | |
CN105159782A (zh) | 基于云主机为订单分配资源的方法和装置 | |
CN112799823B (zh) | 边缘计算任务的在线分派调度方法和系统 | |
CN111767146A (zh) | 一种基于网络重配置的分布式机器学习系统加速方法 | |
US11455188B2 (en) | System and method for increasing robustness of heterogeneous computing systems | |
JP2009541851A (ja) | リソースに基づいたスケジューラ | |
CN113918301A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN116521234B (zh) | 一种处理器管线指令轮询调度的方法和装置 | |
CN111818122B (zh) | 基于流量公平的广域网数据预取方法 | |
CN113886030A (zh) | 资源调度方法、电子设备及存储介质 | |
CN115150340B (zh) | 一种动态调整消息队列权重的方法和装置 | |
CN114640630B (zh) | 一种流量管控方法、装置、设备及可读存储介质 | |
CN107589985B (zh) | 一种面向大数据平台的两阶段作业调度方法及系统 | |
US11489786B2 (en) | Queue management system, starvation and latency management system, and methods of use | |
CN115766612A (zh) | 一种基于权重转换概率的调度方法及相应的装置 | |
CN114661415A (zh) | 调度方法及计算机系统 | |
CN116848508A (zh) | 基于强化学习模型调度任务以供计算机执行 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |