CN105786448B - 一种指令调度方法及装置 - Google Patents

一种指令调度方法及装置 Download PDF

Info

Publication number
CN105786448B
CN105786448B CN201410829197.XA CN201410829197A CN105786448B CN 105786448 B CN105786448 B CN 105786448B CN 201410829197 A CN201410829197 A CN 201410829197A CN 105786448 B CN105786448 B CN 105786448B
Authority
CN
China
Prior art keywords
instruction
fetching
thread
module
state
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
Application number
CN201410829197.XA
Other languages
English (en)
Other versions
CN105786448A (zh
Inventor
周峰
安康
王志忠
刘衡祁
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.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
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 Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201410829197.XA priority Critical patent/CN105786448B/zh
Priority to PCT/CN2015/090154 priority patent/WO2016101664A1/zh
Publication of CN105786448A publication Critical patent/CN105786448A/zh
Application granted granted Critical
Publication of CN105786448B publication Critical patent/CN105786448B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

本发明实施例公开了一种指令调度方法及装置,该方法包括:预取并缓存各线程预设数量的指令;根据线程状态及所述缓存的预取指令进行指令调度。本发明实施例首先执行指令预取,再根据预取的指令进行调度,从而能够避免指令空拍,提高指令调度效率及ME的整体性能;此外,如果进一步进行指令优先级调度,还可以减轻乱序程度,进一步提高指令调度效率及ME的整体性能。

Description

一种指令调度方法及装置
技术领域
本发明涉及网络处理器技术,尤其涉及一种指令调度方法及装置。
背景技术
为了满足未来网络发展的需要,提高路由器的性能,处于因特网(Internet)骨干位置的核心路由器进行了一个又一个的技术变革。尤其在高端路由器市场,网络处理器以其杰出的报文处理性能及可编程性已经成为构成路由转发引擎不可替代的部分。
在网络处理器系统中,微引擎(ME,Micro Engine)是网络处理器的核心部件,负责根据微码指令(Microcode Instructions)完成对报文的解析与处理。微码指令是ME工作的必要条件,因此,ME取指及指令的调度影响着ME整体的性能,取指及指令的调度效率不高将会使ME没有足够的指令来执行而处于初始状态。因此需要设计一个合理高效的方案来实现ME取指及指令的调度,同时使ME有较高的处理性能。
传统的多线程网络处理器都采用了高速缓存(cache)来存储微码指令,由于cache的访问有一定几率的不命中,对于粗粒度多线程结构的ME在取指及指令的调度方法不高效时,指令的空拍会造成内核流水线的空闲,从而导致ME性能的下降。
另外,虽然细粒度多线程结构的ME可以利用线程切换来隐藏取指空拍的问题,但是由于线程频繁的切换,在一定程度上会加重ME处理报文的乱序程度。这种乱序程度会越来越大,最终导致报文进出ME的乱序程度加大,从而对网络处理器后续的保序模块造成较大的压力,导致系统整体性能的下降。
发明内容
有鉴于此,为解决现有存在的技术问题,本发明实施例提供:
一种指令调度方法,包括:
预取并缓存各线程预设数量的指令;
根据线程状态及所述缓存的预取指令进行指令调度。
一具体实施例中,所述预取指令,包括:
向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;
接收来自指令缓存模块的响应消息,确定所述响应消息携带取指成功信息和指令内容时,获取所述指令内容以进行本地缓存;确定所述响应消息携带取指失败信息和取指地址时,将所述取指地址重新加入取指队列,根据调度重新取指。
一具体实施例中,所述取指地址包括以下一种或多种:新包取指地址、分支取指地址、重新取指地址和顺序取指地址。
一具体实施例中,该方法还包括:
确定线程缓存的指令数量不大于预设值时,启动新一轮对所述线程的指令预取,即预取并缓存所述线程预设数量的指令。
一具体实施例中,线程状态包括:初始状态、等待状态和准备状态,
所述根据线程状态及所述缓存的预取指令进行指令调度,包括:
根据近期最少使用算法LRU及线程的进包先后顺序,对线程状态为准备状态的线程进行调度。
本发明实施例还提供一种指令调度装置,包括:取指模块、指令寄存器模块、控制状态机模块和指令调度模块;其中,
所述取指模块,用于预取各线程的指令;
所述指令寄存器模块,用于缓存预取的各线程预设数量的指令;
所述控制状态机模块,用于进行线程状态控制;
所述指令调度模块,用于根据控制状态机模块提供的线程状态及指令寄存器模块缓存的预取指令进行指令调度。
一具体实施例中,所述取指模块具体用于:向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;接收来自指令缓存模块的响应消息,所述响应消息携带取指失败信息和取指地址,之后,将所述取指地址重新加入取指队列,根据调度重新取指;
所述控制状态机模块,还用于接收来自指令缓存模块的响应消息,所述响应消息携带取指成功信息和指令内容,之后,获取所述指令内容并发送至指令寄存器模块进行缓存。
一具体实施例中,所述控制状态机模块,还用于判断指令寄存器模块缓存的线程的指令数量是否不大于预设值;
所述取指模块,还用于在控制状态机模块确定线程的指令数量不大于预设值时,启动新一轮对所述线程的指令预取。
一具体实施例中,所述指令调度模块,具体用于根据LRU对线程状态为准备状态的线程进行调度。
本发明实施例所述的指令调度方法及装置,预取并缓存各线程预设数量的指令;根据线程状态及所述缓存的预取指令进行指令调度。本发明实施例首先执行指令预取,再根据预取的指令进行调度,从而能够避免指令空拍,提高指令调度效率及ME的整体性能;此外,如果进一步进行指令优先级调度,还可以减轻乱序程度,进一步提高指令调度效率及ME的整体性能。
附图说明
图1为本发明实施例一种指令调度方法流程示意图;
图2为本发明实施例一种指令调度装置结构示意图;
图3为本发明实施例1所述的ME指令调度流程示意图;
图4为本发明实施例2所述的ME指令预取流程示意图;
图5为本发明实施例2中控制状态机状态跳转示意图;
图6为本发明实施例3所述的ME线程级指令调度的流程示意图;
图7为本发明实施例3中指令调度模块的结构示意图。
具体实施方式
为了提高指令调度效率及ME的整体性能,本发明实施例提出了一种指令调度方法,如图1所示,该方法包括:
步骤101:预取并缓存各线程预设数量的指令。
一具体实施例中,所述预取指令,包括:
向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;这里,取指地址可以包括以下一种或多种:新包取指地址、分支取指地址、重新取指地址和顺序取指地址。
接收来自指令缓存模块(即cache)的响应消息,确定所述响应消息携带取指成功信息和指令内容(即接收到取指成功响应)时,获取所述指令内容以进行本地缓存;确定所述响应消息携带取指失败信息和取指地址(即接收到取指失败响应)时,将该取指地址重新加入取指队列,根据调度重新取指。
步骤102:根据线程状态及所述缓存的预取指令进行指令调度。
一具体实施例中,线程状态包括:初始状态、等待状态和准备状态,相应的,所述根据线程状态及所述缓存的预取指令进行指令调度,包括:根据近期最少使用算法LRU对线程状态为准备状态的线程进行调度。这里,线程状态为准备状态表示控制状态机模块给出了线程准备状态信号。需要说明的是,并不是在线程准备好之后立即给出准备状态信号,同一线程的两个准备状态信号之间一般需要间隔预设时间。
需要说明的是,如果指令被调度,则删除缓存中的该指令。
一具体实施例中,该方法还包括:
确定线程缓存的指令数量不大于预设值时,启动新一轮对所述线程的指令预取,即预取并缓存所述线程预设数量的指令。
本发明实施例还相应地提出了一种指令调度装置,如图2所示,该装置包括:取指模块201、指令寄存器模块202、控制状态机模块203和指令调度模块204;其中,
所述取指模块201,用于预取各线程的指令;
所述指令寄存器模块202,用于缓存预取的各线程预设数量的指令;
所述控制状态机模块203,用于进行线程状态控制;
所述指令调度模块204,用于根据控制状态机模块提供的线程状态及指令寄存器模块缓存的预取指令进行指令调度。
一具体实施例中,所述取指模块201具体用于:向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;接收来自指令缓存模块的响应消息,所述响应消息携带取指失败信息和取指地址,之后,将该取指地址重新加入取指队列,根据调度重新取指;
相应的,所述控制状态机模块203,还用于接收来自指令缓存模块的响应消息,所述响应消息携带取指成功信息和指令内容,之后,获取所述指令内容并发送至指令寄存器模块进行缓存。
一具体实施例中,所述控制状态机模块203,还用于判断指令寄存器模块缓存的线程的指令数量是否不大于预设值;
所述取指模块201,还用于在控制状态机模块确定线程的指令数量不大于预设值时,启动新一轮对所述线程的指令预取。
一具体实施例中,所述指令调度模块204,具体用于根据LRU对线程状态为准备状态的线程进行调度。
将本发明实施例所述的指令调度装置设置于ME上,能够避免指令空拍,减轻乱序程度,进而提高指令调度效率及ME的整体性能。
下面通过具体实施例对本发明的技术方案作进一步详细说明。下述实施例中,指令调度装置设置于ME,ME通过指令调度装置完成多线程的指令取指及指令调度。指令调度装置根据所有线程执行情况,提前产生各自的取指PC,并从cache中取得相应线程的指令,加载到内部的缓存。指令调度装置管理每个线程的指令调度,按照LRU算法(LeastRecently Used)完成线程级指令调度,从缓存中将指令发射给流水线(pipeline),同时保证先进入ME的报文优先执行完指令。
本实施例中涉及的指令调度装置参考图2,主要包括取指模块(gen_pc)、控制状态机模块(ctrl_fsm)、指令寄存器模块(instr_rf)和指令调度模块。本实施例中,指令调度装置根据所有线程执行情况,提前产生各自的取指PC,并从cache中取得相应线程的指令,加载到内部的缓存,具体包括:
1)新报文进入ME时,信息中携带有新包取指地址(pkt_pc)。取指模块解析报文信息,产生pkt_pc,写入取指队列(pc_queue),向cache发出取指请求。cache返回指令后,指令调度装置将返回的指令按照其线程号,写入到指令寄存器模块中的相应缓存。
2)指令寄存器模块完成取回指令的加载和预解析操作,每个线程可以存储4条指令。将解析出的halt类、跳转类或者非法指令通知给控制状态机模块。
3)控制状态机模块监视每个线程的指令寄存器,当某个线程执行到倒数第二条指令时,会提前发出每个线程的取指请求(顺序取指地址),以避免当前线程最后一条指令发出后,缓存中没有有效指令可被发出,出现空拍。
4)当取指发生不命中(cache miss)时,cache返回当前的pc(重新取指地址)值,指令调度装置将此pc重新写入pc queue,等待再次取指。
下述实施例中,指令调度装置还管理每个线程的指令调度,在指令预取的基础上按照LRU算法(Least Recently Used)完成线程级指令调度,从缓存中将指令发射给pipeline,同时保证先进入ME的报文优先执行完指令,具体处理为:
当某个线程指令寄存器被加载有效指令后,状态机处于rdy状态,给出ready信号后,等待指令模块调度授权。指令调度模块根据Least Recently Used算法,尽量使报文先进入的线程取得最高优先级,使这个线程的指令最先处理完毕。指令调度模块根据不同线程给出的ready,完成授权,得到授权的线程即将指令发送到流水线完成指令的处理。
当某个线程的指令寄存器指令分配完毕(4个指令都已经发送给内核流水线)或者解析出分支指令时,状态机跳转到wait状态。如果某个线程只剩下最后一条指令在缓存未被发出时,指令调度装置则向pc queue写入取指地址PC,向cache取回下一组的4条指令。如果是branch指令,则等待流水线解析出新的pc再写入pc queue。此时不给出ready信号,即不参与线程级指令调度。当新的指令返回后,状态机重新进入rdy状态。如果解析出halt指令,状态机则跳到idle状态,拉低ready信号,不参与线程级指令调度。
实施例1
图3为本发明实施例1所述的ME指令调度流程示意图,如图3所示,该方法包括以下步骤:
步骤301,取指模块解析新包中携带的取指pc信息,并发出取指请求;
在这里,取指模块是由四个队列加仲裁模块组成,队列缓存对应的取指请求,经过4到1的仲裁后向cache发出取指请求。考虑到实际处理报文取指请求时,四个队列分别对应于四种取指pc请求,新包取指pkt_pc、报文顺序取指、跳转取指、cache不命中后重复取指。
在实际报文处理中,对于新包,解析报文信息,提取取指pc,发出取指请求。而对于正在处理中的报文,实际有顺序pc+1的取指,跳转类指令后的取指和cache不命中后的重复取指,为方便管理和实现取指操作,所以采用队列分类管理和缓存,其中队列的深度只需设置为ME的线程数。
通过实际性能测试,取指设置队列仲裁的优先级顺序为pc+1取指、跳转取指、cache不命中取指、新包pc取指(高优先级在前),可以保证性能最优化。
步骤302,新包经过取指模块发出取指请求后,cache向控制状态机模块返回指令,指令寄存器模块获取该指令并完成指令的加载和预解析;
在实际应用中,指令寄存器模块中的指令缓存是由寄存器组构成,每个线程可以缓存四条指令。在某个线程发出一条指令之前,指令寄存器模块对指令完成预解析操作,分析出指令的操作类型,为状态控制机提供控制信号。
步骤303,指令调度模块完成指令级调度,发出指令给pipeline;
具体的,报文的指令在指令寄存器模块完成加载后,会对指令调度模块发出ready请求(当前线程已经将指令准备好,请求向pipeline发出指令)。指令调度模块给予授权之后,报文所在的线程向pipeline发出一条指令。
在实际应用中,ME是多线程运行的,存在多个线程发出ready请求,指令调度模块需要使用调度策略保证先进入的报文始终可以得到授权的优先级高。
具体的,lru调度策略是一种动态更新base值的RR调度算法。指令调度模块使用队列中记录每个线程的线程号,将其作为RR调度算法的base值。这样先进入ME的报文的线程号将排在队列的头部,将其作为RR调度算法的base值,RR调度的结果就会始终使排在队列头部的报文得到高优先级授权。
步骤304,控制状态机模块监视每个线程的工作状态,预先发出取指请求或者释放线程完成处理。
具体的,控制状态机模块监视每个线程的指令缓存计数,当某个线程的指令缓存中只剩下一条指令时,会提前发出每个线程的pc+1的取指请求给取指模块,以避免当前线程最后一条指令发出后,缓存中没有有效指令可被发出,出现空拍。
控制状态机模块为每个线程设置一个状态机,当某个线程执行到跳转类指令时,状态机将进入wait状态,由流程解析跳转指令后将取指请求发出给取指模块,等新的指令返回后,再重新激活这个线程的状态机进入rdy工作状态。
步骤305,当某个线程执行到Halt指令时,状态机将进入idle状态。Halt指令是报文处理完毕并发出的指令,所以执行到此指令后,控制状态机模块将使此线程的状态机进入idle休眠状态,释放此线程所有的缓存资源,等此线程重新分配给新包后将再度被使用。
实施例2
本实施例中,指令调度装置通过取指模块和控制状态机模块完成指令的预取,图4为本发明实施例2所述的ME的指令预取流程示意图,如图4所示,该方法包括以下步骤:
步骤401,新包进入ME,指令调度装置解析并提取取指pc,向取指模块发出取指请求;
步骤402,取指模块经过仲裁调度,向cache发出取指请求;
步骤403,指令返回并加载到指令寄存器模块,被调度发射到pipeline。在执行过程中,控制状态机模块会监视每个线程的指令发射情况。当指令缓存中只剩下一条指令时,将会提前对取指模块发出pc+1取指请求,指令返回后将继续执行。
控制状态机模块为每个线程设置一个状态机,而当线程执行到跳转类指令时,控制状态机模块将使状态机进入到wait状态,将pipeline解析后的跳转地址请求发送给取指模块。指令返回后,将激活状态机进入到rdy状态,等待调度,继续发射指令到pipeline。
当线程执行到Hlat指令时,代表报文执行完毕并发出,控制状态机模块将使状态机进入到idle状态,并释放该线程的所有资源,该报文处理完毕。
图5为本发明实施例2中控制状态机状态跳转示意图,如图5所示,状态跳转具体涉及:
1)初始,线程里没包时,状态机处于idle状态;
2)当第一条指令取回时,转移到rdy状态;
3)rdy时,发出ready请求(每4个周期发出一个线程的ready请求信号)。如果数据口指令解析为halt,并且得到这个指令的授权后,转移到idle状态。此线程包处理完毕,重新回到初始状态。
如果数据口指令解析为跳转类指令,并且得到这个指令的授权后,转移到wait状态。
4)wait状态时,表示指令缓存中的指令已经发射完,而等待新的指令返回。此时不给出ready请求。cache返回新的指令后,重新转移到rdy状态,并重新发出ready请求。
实施例3
本实施例中,指令调度装置通过指令调度模块管理每个线程的指令调度。指令调度模块按照LRU算法(Least Recently Used)完成线程级指令调度,从缓存中将指令发射给pipeline,保证先进入ME的报文优先执行完指令。
图6为本发明实施例3所述的ME线程级指令调度的流程示意图,如图6所示,该方法包括以下步骤:
步骤601,提取新包的线程号,将其写入base队列;
本发明线程级指令调度策略的本质是动态更新base的RR轮询调度,这个base的值置为对用线程的值时,那么这个线程即可始终得到最高优先级的授权。base队列深度和ME线程数目相同,用来存储每个线程的线程号,每个线程号对应一个base值。
步骤602,将所有线程的base值分为4个组(group)存储,按四组完成最终的调度;
新包按0-3顺序顺次写入到四组,当前group已满,则写入下一group;授权调度时,四个group分别给出各自组内的调度结果,再按0-3的顺序从四组内给出最终的授权。
步骤603,新包对应的base值写入到某个group时,该线程对应的标记位(bitmap)位置有效,包处理完毕时,该线程的bitmap位置无效;
图7为本发明实施例3中指令调度模块的结构示意图,如图7所示,group内部的每个线程有对应的bitmap标记位,用来标记组内存储的线程是否正在被执行。新包base值写入group时,该标记位置1,表示该线程在执行中;包处理完毕时,该线程对应的bitmap标记位置为0,表示该线程已经处理完毕,不再参与指令调度。group每周期查看队列排头base值对应的bitmap标记位,当标记位为0时,就将队列中排头的base值读出,base值对应的线程不再参与指令调度;同时将下一个base值读出到排头位置,对应的线程以最高优先级参与指令调度。
步骤604,队列按先入先出顺序,将base值输出给RR调度模块,实现动态更新base的RR轮询调度;
在这里,在队列排头位置的线程即享受最高优先级的指令调度,而base值的写入顺序是按照进包顺序写入的,因此,lru调度策略就实现了先进入ME的报文优先执行完指令的设计。
步骤605,某个线程处理完毕,读出该线程的base值,下一个base值读出到排头位置,对应的线程以最高优先级参与指令调度。这样就实现了按照LRU算法(Least RecentlyUsed)完成线程级指令调度,保证先进入ME的报文优先执行完指令的设计。
本发明上述实施例提供了微引擎指令调度方案,ME通过指令调度装置完成多线程的指令取指及指令调度,根据所有线程执行情况,提前产生各自的取指PC,并从cache中取得相应线程的指令,加载到内部的缓存,同时管理每个线程的指令调度,按照LRU算法完成线程级指令调度,从缓存中将指令发射给pipeline,保证先进入ME的报文优先执行完指令;从硬件结构上有效避免了ME取指空拍的问题,有效地提高ME工作性能;同时保证进入ME的报文能顺序的被执行完毕,提高了网络处理器的整体性能,并且方案实现相对简单,易实现。
上述各单元可以由电子设备中的中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processor,DSP)或可编程逻辑阵列(Field-Programmable Gate Array,FPGA)实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (7)

1.一种指令调度方法,其特征在于,该方法包括:
预取并缓存各线程预设数量的指令;
根据线程状态及所述缓存的预取指令进行指令调度;
所述预取指令,包括:
向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;
接收来自指令缓存模块的响应消息,确定所述响应消息携带取指成功信息和指令内容时,获取所述指令内容以进行本地缓存;确定所述响应消息携带取指失败信息和取指地址时,将所述取指地址重新加入取指队列,根据调度重新取指。
2.根据权利要求1所述的方法,其特征在于,所述取指地址包括以下一种或多种:新包取指地址、分支取指地址、重新取指地址和顺序取指地址。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:
确定线程缓存的指令数量不大于预设值时,启动新一轮对所述线程的指令预取,即预取并缓存所述线程预设数量的指令。
4.根据权利要求1至3任一项所述的方法,其特征在于,线程状态包括:初始状态、等待状态和准备状态,
所述根据线程状态及所述缓存的预取指令进行指令调度,包括:
根据近期最少使用算法LRU及线程的进包先后顺序,对线程状态为准备状态的线程进行调度。
5.一种指令调度装置,其特征在于,该装置包括:取指模块、指令寄存器模块、控制状态机模块和指令调度模块;其中,
所述取指模块,用于预取各线程的指令;
所述指令寄存器模块,用于缓存预取的各线程预设数量的指令;
所述控制状态机模块,用于进行线程状态控制;
所述指令调度模块,用于根据控制状态机模块提供的线程状态及指令寄存器模块缓存的预取指令进行指令调度;
所述取指模块具体用于:向指令缓存模块发送取指请求,所述取指请求至少携带取指地址;接收来自指令缓存模块的响应消息,所述响应消息携带取指失败信息和取指地址,之后,将所述取指地址重新加入取指队列,根据调度重新取指;
所述控制状态机模块,还用于接收来自指令缓存模块的响应消息,所述响应消息携带取指成功信息和指令内容,之后,获取所述指令内容并发送至指令寄存器模块进行缓存。
6.根据权利要求5所述的装置,其特征在于,
所述控制状态机模块,还用于判断指令寄存器模块缓存的线程的指令数量是否不大于预设值;
所述取指模块,还用于在控制状态机模块确定指令寄存器模块缓存的线程的指令数量不大于预设值时,启动新一轮对所述线程的指令预取。
7.根据权利要求5至6任一项所述的装置,其特征在于,
所述指令调度模块,具体用于根据LRU对线程状态为准备状态的线程进行调度。
CN201410829197.XA 2014-12-26 2014-12-26 一种指令调度方法及装置 Active CN105786448B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410829197.XA CN105786448B (zh) 2014-12-26 2014-12-26 一种指令调度方法及装置
PCT/CN2015/090154 WO2016101664A1 (zh) 2014-12-26 2015-09-21 一种指令调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410829197.XA CN105786448B (zh) 2014-12-26 2014-12-26 一种指令调度方法及装置

Publications (2)

Publication Number Publication Date
CN105786448A CN105786448A (zh) 2016-07-20
CN105786448B true CN105786448B (zh) 2019-02-05

Family

ID=56149185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410829197.XA Active CN105786448B (zh) 2014-12-26 2014-12-26 一种指令调度方法及装置

Country Status (2)

Country Link
CN (1) CN105786448B (zh)
WO (1) WO2016101664A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106909343B (zh) * 2017-02-23 2019-01-29 北京中科睿芯科技有限公司 一种基于数据流的指令调度方法及装置
CN109257280B (zh) * 2017-07-14 2022-05-27 深圳市中兴微电子技术有限公司 一种微引擎及其处理报文的方法
CN109101276B (zh) 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
CN109308194B (zh) * 2018-09-29 2021-08-10 北京字节跳动网络技术有限公司 用于存储数据的方法和装置
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN112789593A (zh) * 2018-12-24 2021-05-11 华为技术有限公司 一种基于多线程的指令处理方法及装置
US11016771B2 (en) * 2019-05-22 2021-05-25 Chengdu Haiguang Integrated Circuit Design Co., Ltd. Processor and instruction operation method
CN114168202B (zh) * 2021-12-21 2023-01-31 海光信息技术股份有限公司 指令调度方法、指令调度装置、处理器及存储介质
CN114721727B (zh) * 2022-06-10 2022-09-13 成都登临科技有限公司 一种处理器、电子设备及多线程共享的指令预取方法
CN116414463B (zh) * 2023-04-13 2024-04-12 海光信息技术股份有限公司 指令调度方法、指令调度装置、处理器及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN102567117A (zh) * 2010-09-30 2012-07-11 国际商业机器公司 调度处理器中的线程的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130166882A1 (en) * 2011-12-22 2013-06-27 Jack Hilaire Choquette Methods and apparatus for scheduling instructions without instruction decode

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN102567117A (zh) * 2010-09-30 2012-07-11 国际商业机器公司 调度处理器中的线程的方法和系统

Also Published As

Publication number Publication date
WO2016101664A1 (zh) 2016-06-30
CN105786448A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
CN105786448B (zh) 一种指令调度方法及装置
US11112998B2 (en) Operation instruction scheduling method and apparatus for nand flash memory device
US8082420B2 (en) Method and apparatus for executing instructions
US9442861B2 (en) System and method for out-of-order prefetch instructions in an in-order pipeline
CN106462395A (zh) 多线程处理器架构中的线程等待
CN106991073B (zh) 用于向量运算的数据读写调度器及保留站
US7152170B2 (en) Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
JPWO2008155834A1 (ja) 処理装置
TW200910096A (en) Reordering data responses
CN106462392B (zh) 用于高速缓冲存储器存取模式选择的方法和设备
CN110457238A (zh) 减缓GPU访存请求及指令访问cache时停顿的方法
WO2021091649A1 (en) Super-thread processor
US9804853B2 (en) Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction
CN108733585A (zh) 缓存系统及相关方法
US10740029B2 (en) Expandable buffer for memory transactions
CN105378652B (zh) 线程共享资源分配方法及装置
US8490098B2 (en) Concomitance scheduling commensal threads in a multi-threading computer system
WO2013185660A1 (zh) 一种网络处理器的指令存储装置及该装置的指令存储方法
KR20140131781A (ko) 메모리 제어 장치 및 방법
US10372453B2 (en) Fetching instructions in an instruction fetch unit
CN105786758B (zh) 一种具有数据缓存功能的处理器装置
CN107025064B (zh) 一种低延迟高iops的数据访问方法
US11449428B2 (en) Enhanced read-ahead capability for storage devices
CN104636207A (zh) 基于gpgpu体系结构的协同调度方法及系统
JP2008015668A (ja) タスク管理装置

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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160720

Assignee: Xi'an Chris Semiconductor Technology Co. Ltd.

Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Contract record no.: 2019440020036

Denomination of invention: Instruction scheduling method and device

Granted publication date: 20190205

License type: Common License

Record date: 20190619