CN117539545A - 指令执行的方法和装置 - Google Patents
指令执行的方法和装置 Download PDFInfo
- Publication number
- CN117539545A CN117539545A CN202210924615.8A CN202210924615A CN117539545A CN 117539545 A CN117539545 A CN 117539545A CN 202210924615 A CN202210924615 A CN 202210924615A CN 117539545 A CN117539545 A CN 117539545A
- Authority
- CN
- China
- Prior art keywords
- block
- instruction
- slice
- queue
- instructions
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000012545 processing Methods 0.000 claims description 20
- 230000002159 abnormal effect Effects 0.000 claims description 18
- 230000008878 coupling Effects 0.000 claims description 9
- 238000010168 coupling process Methods 0.000 claims description 9
- 238000005859 coupling reaction Methods 0.000 claims description 9
- 230000005856 abnormality Effects 0.000 claims description 5
- 239000011800 void material Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000011144 upstream manufacturing Methods 0.000 description 12
- 230000000903 blocking effect Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000001680 brushing effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer 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, look ahead
Abstract
本申请实施例提供了一种指令执行的方法,其中,该方法包括:确定队列中第一块的执行状态为完成状态,所述队列包括多个块,所述第一块为所述队列中编号最小的块,所述第一块包括至少一个指令;根据所述第一块中指令的执行结果改变处理器的状态;将所述第一块从所述队列中删除。本申请技术方案能够将结构化指令集架构应用在处理器中,解决低层级指令阻塞硬件资源的问题,提高程序的运行效率。
Description
技术领域
本申请实施例涉及计算机领域,具体涉及一种指令执行的方法和装置。
背景技术
目前主流处理器都采用的非结构化指令集架构,这种指令集架构中,每个指令的提交要等待该指令之前的指令提交后才能进行,因此低层级指令可能会堵塞硬件资源,导致后续指令无法提交。
结构化指令集架构将程序分为了两个层级:块与块内微指令。单个块是若干条微指令的集合,而程序又是若干个块的集合。结构化指令集架构可以解决低层级指令堵塞硬件资源的问题,但是由于结构化指令集架构不能保证指令的顺序提交,因此对于随时可能到来的精确异常,不能保证对异常前的指令都执行,异常后的指令都没有执行的精确状态,只会在出现内部异常后重头开始执行程序,因此不能应用在处理器中。
因此,如何将结构化指令集架构应用在处理器中,避免低层级指令阻塞硬件资源是一个亟待解决的技术问题。
发明内容
本申请实施例提供一种指令执行的方法和装置,能够解决低层级指令阻塞硬件资源的问题,提高了程序的运行效率。
第一方面,提供了一种指令执行的方法,该方法包括:确定队列中第一块的执行状态为完成状态,所述队列包括多个块,所述第一块为所述队列中编号最小的块,所述第一块包括至少一个指令;根据所述第一块中指令的执行结果改变处理器的状态;将所述第一块从所述队列中删除。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
应理解,块为一段线性的程序代码,只能从这段代码开始处进入这段程序,并且只能从这段代码最后一行离开这段程序。块是若干条指令的集合,而程序是若干个块的集合。
应理解,队列中块的编号和指令的编号可以存放在重排序缓冲区(reorderbuffer,ROB)中。指令执行完成后会将执行结果存放在物理寄存器中。提交指的是按照ROB里指令编号顺序,按序根据指令执行的结果更改处理器架构状态。第一块为完成状态,意味着第一块中指令的执行结果均已存放在物理寄存器中,由于第一块为队列中编号最小的块,意味着下一次提交的指令应当是第一块中的指令,本申请提供的方法会根据第一块中指令的编号顺序按序根据每个指令的执行结果更改处理器状态,然后将队列中的第一块删除。
可选的,第一块可以是队列的队首块,在确定第一块的执行状态为完成状态后,提交第一块中的指令,然后将第一块从队首出队。应理解,提交第一块中的指令指的是按照ROB里第一块中指令的顺序,按序根据指令执行的结果更改处理器架构状态。
可选的,队列可以包括一个提交指针,指示下一个将被提交的块,即提交块。第一块为提交块,每个时钟周期,从提交指针开始往后查询X个块的执行状态,X大于等于1。应理解,X的个数可以通过硬件时序、实现方式还有性能指标确定。如果X个块均为完成状态,则将这X个块提交,然后将提交指针移到下一个将要提交的块上,即更新提交块为该X个块后的下一个块。可选的,提交块可以是队列的队首块,在确定这X个块的执行状态均为完成状态且提交后,将这X个块从队首出队,更新提交块为新的队首块。
应理解,队列中包括多个块,每个块包括至少一条指令。本申请通过利用结构化指令集特有的分块机制来设计结构化ROB,由队列保证块与块之间的提交顺序,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述确定队列中第一块的执行状态为完成状态,包括:确定所述第一块中包括的所有指令的执行状态均为完成状态。
应理解,第一块包括至少一个指令,指令的执行状态包括未完成状态、完成状态和异常状态等,当第一块中所有指令均为完成状态时,认为第一块的执行状态为完成状态。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:确定第一片为第二块中的提交片且所述第一片中的指令为完成状态,所述第二块为所述队列中除所述第一块以外的任意一个块,所述第一片为所述第二块包括的多个片中的一个,所述第一片包括至少一条指令,所述第二块中的多个片通过尾指针连接,所述提交片为所述第二块中最早开始存指令的片;将所述第一片从所述第二块中删除;若所述第一片不是所述第二块中的最后一个片,更新所述第二块中的所述提交片为所述第一片的尾指针指向的片。
应理解,队列包括多个块,每个块包括多个片,每个片包括至少一条指令。多个片之间通过尾指针连接,即上一个片的尾指针指向下一个片。可选的,还可以设置下一个片的头指针指向上一个片,构成链表结构。
队列中可以包括每个块的编号、每个片的编号和每个片中指令的执行状态,指令的执行状态可以包括未完成状态、完成状态和异常状态。
可选的,在确定第一片为第二块中的提交片且所述第一片中的指令为完成状态后,可以将第一片删除,释放第一片占用的硬件资源。应理解,第一片中的指令执行完成后会将执行结果存放在物理寄存器中,由物理寄存器的重命名单元对片与片之间的提交顺序进行管理。
应理解,提交片为所述第二块中最早开始存指令的片,指的是第一片为第二块中最老的片,意味着在第二块包括的所有片中,第一片在第二块中待的时间是最久的,即第一片是最早进入第二块的片。
示例性地,可以通过一个记录队列记录每个块中的提交片,若第一片为第二块中的提交片,并且第一片中的所有指令的执行状态均为完成状态,则可以删除第一片中的指令,然后更新记录队列中第二块的提交片。若第一片不是第二块中的最后一个片,该更新后的提交片为第一片的尾指针指向的下一个片。若第一片是第二块中的最后一个片,则将第二块的执行状态设置为完成状态。
本申请实施例提供了一种指令执行的方法,可以将结构化指令集应用在处理器中,同时在结构化指令集分块机制的基础上增加了分片机制,可以对指令的提交进行更加有效的管理,解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:确定所述第二块中所有指令的执行状态均为完成状态;将所述第二块的执行状态设置为完成状态。
示例性地,当确定第一片为第二块的最后一个片,且第一片中所有指令的执行状态均为完成状态时,认为第二块中所有指令的执行状态均为完成状态,将队列中第二块的执行状态设置为完成状态,等待后续的块的按序提交操作。
示例性地,每个块的最后一个片可以带有一个结束标记,当确定第一片中所有指令的执行状态均为完成状态且第一片带有结束标记时,认为第二块中所有指令的执行状态均为完成状态,将队列中第二块的执行状态设置为完成状态,等待后续的块的按序提交操作。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:获取一个或者多个第三块,所述第三块包括至少一条指令;将所述一个或者多个第三块按照编号从小到大的顺序放入所述队列中。
示例性地,上游模块提供了5个新块,编号分别为121、122、123、124、125,则将该这5个块按照编号从小到大的顺序从队列的队尾入队。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:将第四块中的指令存到第二片,所述第四块为所述一个或者多个第三块中的一个,所述第二片包括至少一个存放指令的空位。
示例性地,当上游模块提供了一个新的块时,例如取址模块提供了一个新块时,本申请实施例会从当前空闲的第二片中挑选出一片,并将新块中的一条或多条微指令信息记录进该片。
可选的,每个片还可以维护一个写指针,若指令未填满一个片的指令空位,则更新该片的指令写指针到下一个指令空位上,方便之后的同块指令继续连续的写入。若当前进入的指令个数超过了当前片的记录容量时,则需要申请新的空闲片,用于写入超出容量的指令,并同时更新该新片的指令写指针。此外,还可以更新上一个片的尾指针为该新片的编号,更新该新片的头指针为上一个片的编号。
本申请实施例提供了一种指令执行的方法,可以将结构化指令集应用在处理器中,同时在结构化指令集分块机制的基础上增加了分片机制,可以对指令的提交进行更加有效的管理,解决低层级指令阻塞硬件资源的问题。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:获取异常信号和异常指令编号;删除所述队列中指令编号大于或者等于所述异常指令编号的指令。
应理解,当遇到内部的处理器异常时,可以获取异常指令编号,然后将队列中指令编号大于或者等于该异常指令编号的指令删除,从而可以保证精确异常,即对异常前的指令都执行,异常后的指令都不执行的精确状态。
本申请实施例提供了一种指令执行的方法,通过利用结构化指令集特有的分块机制来设计结构化ROB,能够保证块按顺序提交,块内微指令按顺序提交,从而保证程序的正确执行,保证精确异常。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:获取中断信号;删除所述队列中除编号最小指令以外的指令。
应理解,当遇到外部中断时,可以删除队列中除编号最小指令以外的指令,即只保留最早进入队列的指令,从而可以保证精确中断,即对中断前的指令都执行,中断后的指令都不执行的精确状态。
本申请实施例提供了一种指令执行的方法,通过利用结构化指令集特有的分块机制来设计结构化ROB,能够保证块按顺序提交,块内微指令按顺序提交,从而保证程序的正确执行,保证精确中断。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:若第三指令正常执行完成,设置所述第三指令的执行状态为完成状态,所述第三指令为所述队列中的任意一条指令;若所述第三指令执行遇到异常,设置所述第三指令的执行状态为异常状态。
应理解,队列中可以记录每个块的编号、每个片的编号和每个片中指令的执行状态,指令的执行状态可以包括未完成状态、完成状态和异常状态。可选的,队列中还可以记录指令的异常类型。
本申请实施例提供了一种指令执行的方法,通过队列保证结构化指令集中指令的顺序提交,从而可以将结构化指令集应用在处理器中,同时利用结构化指令集特有的分块机制,可以将已经执行完的指令所占用的硬件资源提前释放,能够解决低层级指令阻塞硬件资源的问题。
第二方面,本申请实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器和所述存储器通过总线系统连接,所述处理器,包括上述第二方面或者第二方面的任一种可能的实现方式所述的处理器;所述存储器,用于存储所述处理器运行的程序和数据。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是本申请实施例提供的一种示例性块指令控制流图。
图2是本申请实施例提供的一种示例性程序层级结构示意图。
图3是本申请实施例提供的一种指令执行方法的示例性流程图。
图4是本申请实施例提供的一种微指令ROB结构示意图。
图5是本申请实施例提供的一种微指令ROB操作示意图。
图6是本申请实施例提供的一种指令进入的操作示意图。
图7是本申请实施例提供的另一种指令进入的操作示意图。
图8是本申请实施例提供的另一种微指令ROB结构示意图。
图9是本申请实施例提供的一种指令刷出的操作示意图。
图10是本申请实施例提供的一种块ROB操作示意图。
图11是本申请实施例提供的一种块进入的操作示意图。
图12是本申请实施例提供的一种块状态更新的操作示意图。
图13是本申请实施例提供的一种块出队的操作示意图。
图14是本申请实施例提供的一种计算机装置的结构示例图。
图15是本申请实施例提供的另一种计算机装置的结构示例图。
图16是本申请实施例提供的一种计算机程序产品的示例图。
具体实施方式
在中央处理器(central processing unit,CPU)中为了能够让指令的执行尽可能地并行起来,从而发明了流水线技术。但是如果两条指令的前后存在依赖关系,比如数据依赖,控制依赖等,此时后一条语句就必需等到前一条指令完成后,才能开始。
指令集架构(instruction set architecture,ISA)定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。
目前主流处理器都采用的非结构化指令集架构,通过乱序执行,顺序提交(in-order commit)的计算范式来提高程序的运行效率,且应对随时可能到来的精确中断。乱序执行,顺序提交的计算范式可以在保证结果一致的情况下,把原来有序的指令列表,按照指令依赖关系和指令执行周期,重新安排执行顺序,从而达到提高性能的目的。其做法是将乱序执行对架构状态的改变先缓存在重排缓冲区,例如,缓存在重排序缓冲区(reorderbuffer,ROB)中,之后硬件将按重排序缓冲区里的顺序,顺序地更改架构状态。
在处理器架构中,重排序缓存机制是为了实现指令顺序提交、精确异常的机制,使处理器能够实现精确的异常处理和有效的硬件投机执行。其原理可简单概括为顺序入队,顺序出队,通常以一个先进先出(first in first out,FIFO)队列来实现此功能。
重排序缓存将记录流水线中已发射的指令,记录指令是否执行完毕、是否异常等信息,并顺序提交执行完毕的指令,然后将指令结果保存到寄存器堆中或写入内存中。未被提交的指令将等待在ROB中,所以ROB的深度即是硬件投机执行的深度。对于大部分程序来说,越大的投机深度意味着有更多机会去挖掘并行度,从而获取更好的性能。
乱序执行,顺序提交的计算范式虽然可以解决精确异常等一系列问题,但是这种计算范式中指令会一直占用着硬件资源,直到该指令成为当前最老指令后才可顺序释放资源。同时,若最老指令的执行时间过长,如读指令的高速缓冲存储器(cache)三级缓存(L3)缺失,则该指令会一直堵塞住硬件,导致后续指令无法提交,降低了程序的运行效率。
在机器的一个CPU周期中,一组实现一定功能的微命令的组合,构成一条微指令。不同于市面常见指令集中程序都由若干条微指令组成的定义,结构化指令的编程模型将程序分为了两个层级:块与块内微指令。单个块是若干条微指令的集合,而程序又是若干个块的集合。
图1是本申请实施例提供的一种示例性块指令控制流图。
块为一段线性的程序代码,只能从这段代码开始处进入这段程序,并且只能从这段代码最后一行离开这段程序。图1的控制流图代表了一个程序执行过程中会遍历到的所有路径,它用图的形式表示一段程序所有基本块执行的可能流向,也能反映一段程序的实时执行过程。示例性地,块指令0为一段程序的入口(第一个基本块),块指令4为一段程序的出口(最后一个基本块),上次执行的基本块到当前活动基本块之间的连线为这段程序的执行流向。
图2是本申请实施例提供的一种示例性程序层级结构示意图。图2的层序结构与图1对应。
程序200包括块0、块1、块2、块3和块4。其中,块0包括n条微指令,块1和块3包括m条微指令,块2包括j条微指令,块4包括k条微指令,n、m、j、k大于等于1。
块通常用于表达块指令的属性,包括种类、大小、跳转类型、输入输出、访存读写个数和微指令存储指针等信息。其中块通过偏移指向分开存储的块内微指令。
块内微指令通常用于表达程序功能,包括很多基本操作指令,如计算指令、逻辑操作指令或者访存指令等。
块0~4之间将通过块间共享寄存器传递数据,而块内微指令会通过块内私有寄存器传递数据,所以结构化指令集包括两套架构状态。
由于结构化指令集架构不能保证指令的顺序提交,因此对于随时可能到来的精确异常,不能保证对异常前的指令都执行,异常后的指令都没有执行的精确状态,只会在出现内部异常后重头开始执行程序,因此不能应用在处理器中。
本申请实施例提供了一种支持结构化指令集顺序提交的方法,能够将结构化指令集架构应用在处理器中,解决低层级指令阻塞重排序缓冲区的问题,提高程序的运行效率。
下面将结合附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本申请保护的范围。
图3是本申请实施例提供的一种指令执行方法的示例性流程图。
310,确定队列中第一块的执行状态为完成状态。
示例性地,队列包括编号按升序排列的多个块,每个块包括至少一条指令。指令的执行状态包括未完成状态、完成状态和异常状态等。第一块为队列中编号最小的块,当第一块中所有指令均为完成状态时,认为第一块的执行状态为完成状态。
320,根据第一块中指令的执行结果改变处理器的状态。
应理解,队列中块的编号和指令的编号可以存放在ROB中。指令执行完成后会将执行结果存放在物理寄存器中。提交指的是按照ROB里指令编号顺序,按序根据指令执行的结果更改处理器架构状态。
第一块为完成状态,意味着第一块中指令的执行结果均已存放在物理寄存器中,由于第一块为队列中编号最小的块,意味着下一次提交的指令应当是第一块中的指令,本申请提供的方法会根据第一块中指令的编号顺序按序根据每个指令的执行结果更改处理器状态。
330,将第一块从队列中删除。
在提交完第一块中的指令,即根据第一块中指令的执行结果改变处理器的状态后,将第一块从队列中删除。
可选的,第一块可以是队列的队首块,在提交完第一块中的指令后,将第一块从队首出队。
可选的,队列可以包括一个提交指针,指示下一个将被提交的块,即提交块。第一块为提交块,每个时钟周期,从提交指针开始往后查询X个块的执行状态,X大于等于1。应理解,X的个数可以通过硬件时序、实现方式还有性能指标确定。如果X个块均为完成状态,则将这X个块提交,然后将提交指针移到下一个将要提交的块上,即更新提交块为该X个块后的下一个块。可选的,提交块可以是队列的队首块,在确定这X个块的执行状态均为完成状态且提交后,将这X个块从队首出队,更新提交块为新的队首块。
本申请实施例中,通过利用结构化指令集特有的分块机制来设计结构化重排序缓冲,从而可以同时挖取程序执行时两个维度的并行度,即块间并行度(block parallelism)与块内并行度(instruction parallelism),通过保证块与块之间按顺序提交,块内微指令按顺序提交,来保证程序的正确执行。
对应微架构层面,本申请实施例将结构化ROB分为两个层级:块ROB与微指令ROB。通过这种分层的机制,可以将块与指令的顺序提交解耦,即通过块ROB保证了块间的顺序提交,通过微指令ROB保证了块内的顺序提交。
由于块内微指令在执行时只会影响块内架构状态,并不会影响外部的架构状态,所以微指令ROB只需要保证块内的提交顺序,而块间的提交顺序将交由上级的块ROB保证。本申请实施例可以利用结构化指令集的分层机制来完成多个块的提交标记,形成乱序提交的效果,并且不会影响架构状态的精确性。同时,由于块内微指令ROB硬件资源可以提前释放,这就意味着本申请实施例中结构化ROB的投机深度比实际深度更大,从而释放了更大的并行度。
本申请实施例中块ROB与微指令ROB分别提供块编号和指令编号,程序中每一条指令都有唯一的块编号和指令编号与之对应,以便硬件确认任意一条指令的位置。
本申请实施例通过利用结构化指令集的指令块特性,将重排序缓冲区结构化。硬件可以获得更大的投机深度和指令平行度,从而提高性能。
下面分别对本申请实施例中的微指令ROB和块ROB进行详细描述。
图4是本申请实施例提供的一种微指令ROB结构示意图。
本申请实施例的微指令ROB为一个链表结构,并且由一个额外的块内微指令提交记录(block instruction commit tracker,BICT)模块记录各个块的执行情况。
如图4所示,piece代表片,block代表块,prv代表头指针,nxt代表尾指针。微指令ROB由M个片组成,每个片为一个ROB的分块,包含K条指令,M大于等于1,K大于等于1。图4所示的微指令ROB结构中,M=16,K=4。每个片可通过头尾指针连接,组成一个链表结构,共可存放M*K条指令,*代表乘。其中,块0包括片0和片1,块1包括片2至片6,块2包括片7和片8,块3包括片9,块4包括片10至片12,块5包括片13和片14,块6包括片15。应理解,块包括的多个片的编号可以不连续,通过头尾指针连接即可,该示例不应理解为对本申请的限制。
微指令ROB中每个片包括如下域段:
域段 | 描述 |
有效位 | 表示该片有效,存有指令 |
绕回位 | 表示该块编号是否绕回,用于比较编号的新老 |
首尾指针 | 表示该片的连接关系,只有同一个块才会有指针连接 |
块编号 | 表示该片所属块的顺序编号 |
片编号 | 表示该片在所属块的顺序编号 |
块起点标记 | 表示该片是所属块的第一个片 |
块终点标记 | 表示该片是所属块的最后一个片 |
指令状态*K | 每个片中存放的K条指令的状态,包括完成,异常,异常类型等信息 |
应理解,绕回位指的是块编号的最高位比特位,示例性地,用四个比特来表示编号为0~15的块。当新加一个编号为16的块时,添加一个绕回位,即用5个比特位来表示编号为16的块。编号为16的块最高位比特为1,其他低位比特为0。通常情况下,块和指令的编号越小越老。
应理解,最老块指的是所有未提交块中编号最小的块,最老片指的是最早进入对应块的未提交片,最老指令指的是最早进入对应片的未提交指令。
微指令ROB可以保证属于同一个块内的微指令的顺序提交,其只需要保证块内的执行顺序,并不需要保证块间的程序也按序提交,而块与块间的顺序提交将交由上级的块ROB保证。若多个块内的部分微指令已被完成,则可以将这些块内的微指令该按顺序提交。当一个块内全部的指令都被提交,则标记其上级的块ROB中与之对应的块的执行状态为完成状态。
由于上级块ROB维护了N个块,使得微指令ROB中至多有N个块的块内微指令在同时执行。执行过程中,每个块内的微指令都会在该块的范围内按顺序提交,同一时间,微指令ROB会处理来自多个块的微指令的提交。为了保证多个块同时提交时指令提交顺序的正确性,本申请还提供了一个记录模块BICT,用来记录每个块的提交进度。
BICT是一个深度为N的队列,其中的每项记录了对应块的执行状态,包括如下域段:
图5是本申请实施例提供的一种微指令ROB操作示意图。
微指令ROB操作400包括指令进入410,指令更新420,指令出队430和指令刷出440。
410,指令进入。
图6是本申请实施例提供的一种指令进入的操作示意图。当上游模块提供了一个新的块时,微指令ROB会从当前空闲的片中挑选出一片(例如,piece0),并将当前进入的一条或多条微指令信息记录进该片,并标记块起点411。此外,每个片还维护了一个写指针413,若指令未填满K个指令空位,则更新该片的指令写指针413,到下一个指令空位上,方便之后的同块指令继续连续的写入。
微指令ROB会同时维护一个计数器,当计数器满的时候将反压上游模块以防止微指令ROB没有足够的空间写入新的块。示例性地,FIFO的阈值设置就是流水反压机制的一种。当下游模块存储的数据量超过将满水线(计数器满)时,下游模块会通过一根流控信号线通知上游模块停止发送模块,当下游模块存储的数据量低于将满水线时,流控信号线为无效状态,上游模块继续发送数据。
图7是本申请实施例提供的另一种指令进入的操作示意图。当上游模块提供的指令与上一个时钟周期进入的指令属于同一个块时,可接着上一个时钟周期时写入的片,继续写入指令信息。若当前进入的指令个数超过了当前片的记录容量时,则需要申请新的空闲片(例如,piece1),用于写入超出容量的指令,并同时更新该片的指令写指针415。此外,硬件还将更新piece1的头指针为上一个片piece0的编号,更新上一个片piece0的尾指针为piece1的编号。
420,指令更新。
微指令ROB中每个片记录有指令状态域段,当指令执行完成后,根据指令的编号来更新微指令ROB内的指令的状态。示例性地,若指令正常执行完成则将指令更新为完成状态。若指令在执行过程中,遇到了异常,则更新该指令为异常状态。可选的,还可以具体记录该指令的异常类型。
430,指令出队。
示例性地,为了设计简单,微指令ROB可以选择同时将一个片出队,即将K条指令绑定一起出队,应理解,这里的出队也可以指的是删除。
当微指令ROB确定块内的某个片为该块最老的片,且该片内所有指令的执行状态均为完成状态时,微指令ROB可以将该片出队。对于一个块中最老片的每个指令来说,只要其为所属片的最后一条指令并且被标记为正常完成状态时即可出队。由于每个片只能由一个块占用,所以只要片内的指令没有全部完成,别的块就不能提前占用该片。
示例性地,微指令ROB确定第一片为第一块中最老的片,可以是微指令ROB向BICT模块查询第一片是否为第一块最老的片,也可以是BICT模块定期向微指令ROB发送各个块中最老片的位置。
同时,微指令ROB不用保证块间的顺序提交,所以允许同时出队多个片。当某个块的全部指令都已出队时(即某个带有块终点标记的片出队时),微指令ROB将向上级块ROB通知该块已完成的信号。
图8是本申请实施例提供的另一种微指令ROB结构示意图。块0包括片0和片1,块1包括片2至片6。示例性地,片1的最后一条指令i3被标记为正常完成状态时,可以将片1出队,由于片1带有块终点标记,因此当片1出队时,微指令ROB将向上级块ROB通知块0已完成的信号。
440,指令刷出。
当遇到内部的处理器异常时,微指令ROB将根据上游提供的异常指令编号,找到比该异常指令年轻的指令,然后将该异常指令和这些年轻的指令全部刷出。从而可以保证精确异常,即对异常前的指令都执行,异常后的指令都不执行的精确状态。应理解,比该异常指令年轻的指令指的是在该异常指令之后进入对应块的指令。
当遇到外部中断时,微指令ROB可以将最老指令以外的指令删除,即只保留微指令ROB中最老的指令,从而可以保证精确中断,即对中断前的指令都执行,中断后的指令都不执行的精确状态。
同时,根据刷出的情况,及时更新每个片的有效位,指令写指针,及BICT中每个块的有效位。应理解,本申请实施例中的指令刷出也可以代表指令删除。
示例性地,图9是本申请实施例提供的一种指令刷出的操作示意图。在遇到内部异常之前,块0包括片0和片1,块1包括片2至片6,即片0至片6有效,BICT中块0和块1有效,指令写指针441位于片6中i2的下一个指令空位上。当遇到内部异常时,上游提供的刷出指令的块编号为1,指令编号为piece4的i2,则将该指令和比该指令年轻的指令刷出。此时,块0包括片0和片1,块1包括片2至片4,即片0至片4有效,BICT中块0和块1有效,指令写指针441位于片4中i1的下一个指令空位上。
本申请实施例确保了块在乱序执行,和块内微指令在乱序执行时程序的精确状态与正确性。
图10是本申请实施例提供的一种块ROB操作示意图。
块ROB可以保证块与块间的提交顺序,块ROB中的每项都记录了一个块的执行状态。与微指令ROB不同的是,块ROB不支持多个块同时提交。由于块内微指令的提交顺序已经由微指令ROB维护,所以块ROB只需要维护块的提交顺序即可。本申请实施例通过队列来实现此功能,即通过先进先出的机制,来保证块的顺序提交。
块ROB的实现方式为一个深度为N的先进先出的队列,通过读写指针来维护块的进出。块ROB记录的具体信息包括:
域段 | 描述 |
有效位 | 表示该块有效,被占用 |
绕回位 | 表示该块编号是否绕回,用于比较编号的新老 |
块编号 | 表示该块的顺序编号 |
完成标记 | 表示该块中所有指令是否已经完成执行 |
异常标记 | 表示该块在执行过程中是否遇到异常 |
异常类型 | 表示该块在执行过程中遇到的异常类型 |
块ROB操作500包括块进入510,块状态更新520和块出队530。
510,块进入。
图11是本申请实施例提供的一种块进入的操作示意图。每当上游模块下发一个或多个块时,硬件将依据块ROB的写指针指示依次将块按顺序放入队列内,记录其块编号信息,并更新写指针511。同时块ROB会维护一个计数器,当计数器满的时候将反压上游模块以防止ROB没有足够的空间写入新的块。
520,块状态更新。
若块内的所有微指令全部执行完成时,微指令ROB会上报块ROB,块ROB会将对应块标记为完成状态。示例性地,图12是本申请实施例提供的一种块状态更新的操作示意图。若块0内的所有微指令全部执行完成,则将块0标记为完成状态。
若块内的某条微指令执行出现异常时或跳转预测出错时,微指令ROB会向块ROB上报,并标记对应指令为异常状态。若当前块内最老的指令被标记为异常,块ROB会上报该异常,并根据系统设计的不同进行相应的处理。
530,块出队。
块ROB的出队要遵守块顺序提交(出队)的规则。本申请实施例通过一个提交指针来指示下一个将被提交的块。每个时钟周期,从提交指针开始往后查询X个块的执行状态。X的个数可以通过硬件时序、实现方式还有性能指标确定。如果有连续的X个块都已经被标记为完成状态,则将它们按序全部提交,并将指针移到下一个将要提交的块上。
可选的,如果有连续的Y个块都已经被标记为完成状态,则将它们按序全部提交,并将指针移到下一个将要提交的块上,X和Y为正整数,X大于等于Y。
示例性地,图13是本申请实施例提供的一种块出队的操作示意图。从提交指针531开始往后查询4个块的执行状态,即查询块3、块4、块5和块6的执行状态,如果连续的块3、块4、块5和块6都已经被标记为完成状态,则将它们按序全部提交,并更新提交指针指向块7。
示例性地,从提交指针531开始往后查询3个块的执行状态,即查询块3、块4和块5的执行状态,如果连续的块3和块4已经被标记为完成状态,则将它们按序全部提交,并更新提交指针指向块5。
可选的,本申请可应用于通用乱序处理器,也可以被扩展到多核系统中,作为对多个任务状态进行记录的层次化方案。本申请实施例为结构化指令集提供了一种多核中分布式重排序缓冲区的物理实现方案。将核与核间的微指令提交顺序解耦,使得多核间可以乱序提交指令块。避免了集中式重排序缓冲区带来的物理走线复杂与时序紧张等问题。
以上描述了根据本申请实施例提供的指令执行的方法,下面分别结合图14和图15描述根据本申请实施例的装置和设备。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图3-13对应实施例中的指令执行方法的部分或全部步骤。
图14为本申请实施例提供的一种计算机装置1000的结构示例图。该计算机装置1000包括获取模块1010和处理模块1020。
其中,获取模块1010,用于获取一个或者多个上游模块下发的新块、获取异常信号和异常指令编号、获取中断信号,执行图5方法中的410和440,执行图10方法中的510。
处理模块1020,用于确定队列中块的执行状态、块内指令的执行状态,更新提交块和提交片,执行图3-13的方法中的部分或全部步骤。
图15为本申请实施例提供的另一种计算机装置1300的结构示例图。计算机装置1300包括处理器1302、通信接口1303和存储器1304。计算机装置1300的一种示例为芯片。计算机装置1300的另一种示例为计算设备。
上述本申请实施例揭示的方法可以应用于处理器1302中,或者由处理器1302实现。处理器1302可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器1302中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
存储器1304可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
处理器1302、存储器1304和通信接口1303之间可以通过总线通信。存储器1304中存储有可执行代码,处理器1302读取存储器1304中的可执行代码以执行对应的方法。存储器1304中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
例如,存储器1304中的可执行代码用于实现图3-13所示的方法,处理器1302读取存储器1304中的该可执行代码以执行图3-13所示的方法。
在本申请的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图16示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品1400是使用信号承载介质1401来提供的。所述信号承载介质1401可以包括一个或多个程序指令1402,其当被一个或多个处理器运行时可以提供以上针对图3-13所示的方法中描述的功能或者部分功能。因此,例如,参考图3-13中所示的实施例,其中的一个或多个特征可以由与信号承载介质1401相关联的一个或多个指令来承担。
在一些示例中,信号承载介质1401可以包含计算机可读介质1403,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。在一些实施方式中,信号承载介质1401可以包含计算机可记录介质1404,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质1401可以包含通信介质1405,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1401可以由无线形式的通信介质1405(例如,遵守IEEE802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令1402可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质1403、计算机可记录介质1404、和/或通信介质1405中的一个或多个传达到计算设备的程序指令1402,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种指令执行的方法,其特征在于,所述方法包括:
确定队列中第一块的执行状态为完成状态,所述队列包括多个块,所述第一块为所述队列中编号最小的块,所述第一块包括至少一个指令;
根据所述第一块中指令的执行结果改变处理器的状态;
将所述第一块从所述队列中删除。
2.根据权利要求1所述的方法,其特征在于,所述确定队列中第一块的执行状态为完成状态,包括:
确定所述第一块中包括的所有指令的执行状态均为完成状态。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
确定第一片为第二块中的提交片且所述第一片中的指令为完成状态,所述第二块为所述队列中除所述第一块以外的任意一个块,所述第一片为所述第二块包括的多个片中的一个,所述第一片包括至少一条指令,所述第二块中的多个片通过尾指针连接,所述提交片为所述第二块中最早开始存指令的片;
将所述第一片从所述第二块中删除;
若所述第一片不是所述第二块中的最后一个片,更新所述第二块中的所述提交片为所述第一片的尾指针指向的片。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述第二块中所有指令的执行状态均为完成状态;
将所述第二块的执行状态设置为完成状态。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
获取一个或者多个第三块,所述第三块包括至少一条指令;
将所述一个或者多个第三块按照编号从小到大的顺序放入所述队列中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将第四块中的指令存到第二片,所述第四块为所述一个或者多个第三块中的一个,所述第二片包括至少一个存放指令的空位。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
获取异常信号和异常指令编号;
删除所述队列中指令编号大于或者等于所述异常指令编号的指令。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
获取中断信号;
删除所述队列中除编号最小指令以外的指令。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述方法还包括:
若第三指令正常执行完成,设置所述第三指令的执行状态为完成状态,所述第三指令为所述队列中的任意一条指令;
若所述第三指令执行遇到异常,设置所述第三指令的执行状态为异常状态。
10.一种计算机装置,其特征在于,所述装置应用于处理器,所述装置包括:
处理模块,用于确定队列中第一块的执行状态为完成状态,所述队列包括多个块,所述第一块为所述队列中编号最小的块,所述第一块包括至少一个指令;
所述处理模块,还用于根据所述第一块中指令的执行结果改变处理器的状态;
所述处理模块,还用于将所述第一块从所述队列中删除。
11.根据权利要求10所述的装置,其特征在于,所述处理模块,具体用于:
确定所述第一块中包括的所有指令的执行状态均为完成状态。
12.根据权利要求10或11所述的装置,其特征在于,所述处理模块,具体用于:
确定第一片为第二块中的提交片且所述第一片中的指令为完成状态,所述第二块为所述队列中除所述第一块以外的任意一个块,所述第一片为所述第二块包括的多个片中的一个,所述第一片包括至少一条指令,所述第二块中的多个片通过尾指针连接,所述提交片为所述第二块中最早开始存指令的片;
将所述第一片从所述第二块中删除;
若所述第一片不是所述第二块中的最后一个片,更新所述第二块中的所述提交片为所述第一片的尾指针指向的片。
13.根据权利要求12所述的装置,其特征在于,所述处理模块,还用于确定所述第二块中所有指令的执行状态均为完成状态;
所述处理模块,还用于将所述第二块的执行状态设置为完成状态。
14.根据权利要求10至13任一项所述的装置,其特征在于,还包括获取模块,用于获取一个或者多个第三块,所述第三块包括至少一条指令;
所述处理模块,还用于将所述一个或者多个第三块按照编号从小到大的顺序放入所述队列中。
15.根据权利要求14所述的装置,其特征在于,所述处理模块,还用于将第四块中的指令存到第二片,所述第四块为所述一个或者多个第三块中的一个,所述第二片包括至少一个存放指令的空位。
16.根据权利要求10至15任一项所述的装置,其特征在于,所述获取模块,还用于获取异常信号和异常指令编号;
所述处理模块,还用于删除所述队列中指令编号大于或者等于所述异常指令编号的指令。
17.根据权利要求10至16任一项所述的装置,其特征在于,所述获取模块,还用于获取中断信号;
所述处理模块,还用于删除所述队列中除编号最小指令以外的指令。
18.根据权利要求10至17任一项所述的装置,其特征在于,所述处理模块,具体用于:
若第三指令正常执行完成,设置所述第三指令的执行状态为完成状态,所述第三指令为所述队列中的任意一条指令;
若所述第三指令执行遇到异常,设置所述第三指令的执行状态为异常状态。
19.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-9中任一项所述的方法。
20.一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-9中任一项所述的方法。
21.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210924615.8A CN117539545A (zh) | 2022-08-02 | 2022-08-02 | 指令执行的方法和装置 |
PCT/CN2023/094685 WO2024027280A1 (zh) | 2022-08-02 | 2023-05-17 | 指令执行的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210924615.8A CN117539545A (zh) | 2022-08-02 | 2022-08-02 | 指令执行的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117539545A true CN117539545A (zh) | 2024-02-09 |
Family
ID=89782906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210924615.8A Pending CN117539545A (zh) | 2022-08-02 | 2022-08-02 | 指令执行的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117539545A (zh) |
WO (1) | WO2024027280A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836230B1 (en) * | 2007-02-14 | 2010-11-16 | Marvell International Ltd. | Managing multiple host requests in queued commands that corresponds to receipt of stored acknowledgement commands from the host |
CN103019806A (zh) * | 2011-09-22 | 2013-04-03 | 北京新媒传信科技有限公司 | 一种异步任务处理方法和装置 |
CN104123195B (zh) * | 2013-04-23 | 2018-03-13 | 华为技术有限公司 | 一种指令清除方法及装置 |
CN106598474A (zh) * | 2015-10-16 | 2017-04-26 | 中兴通讯股份有限公司 | Scsi命令的并发处理方法及装置 |
US10552152B2 (en) * | 2016-05-27 | 2020-02-04 | Arm Limited | Method and apparatus for scheduling in a non-uniform compute device |
CN114217859A (zh) * | 2021-11-16 | 2022-03-22 | 广东赛昉科技有限公司 | 一种乱序提交指令的装置及其方法 |
CN114253694B (zh) * | 2022-02-25 | 2022-06-24 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
-
2022
- 2022-08-02 CN CN202210924615.8A patent/CN117539545A/zh active Pending
-
2023
- 2023-05-17 WO PCT/CN2023/094685 patent/WO2024027280A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024027280A1 (zh) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7496735B2 (en) | Method and apparatus for incremental commitment to architectural state in a microprocessor | |
US7546393B2 (en) | System for asynchronous DMA command completion notification wherein the DMA command comprising a tag belongs to a plurality of tag groups | |
US5790822A (en) | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor | |
TWI434213B (zh) | 最佳化指令效能的方法與裝置及其系統 | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
TWI713589B (zh) | 處理用於向量算術指令的例外狀況 | |
US10747543B2 (en) | Managing trace information storage using pipeline instruction insertion and filtering | |
RU2628156C2 (ru) | Системы и способы отслеживания флага в операциях устранения перемещения | |
JPH07506445A (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
CN101937331A (zh) | 自适应处理远程原子执行 | |
CN105556480A (zh) | 在基于闪存的存储系统中构建raid的方法及系统 | |
US8127115B2 (en) | Group formation with multiple taken branches per group | |
US10007524B2 (en) | Managing history information for branch prediction | |
US6779104B2 (en) | Method and apparatus for pre-processing instructions for a processor | |
US20030093652A1 (en) | Operand file using pointers and reference counters and a method of use | |
CN117539545A (zh) | 指令执行的方法和装置 | |
US20180203703A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
BRPI0609195A2 (pt) | parada de espera por operando fonte quando instruÇço condicional nço for executada | |
CN116302868A (zh) | 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置 | |
CN114546497A (zh) | 乱序处理器中队列的访问方法及装置 | |
CN114296802A (zh) | 指令执行控制方法、装置、处理器和电子设备 | |
CN111158886A (zh) | 用于优化操作系统任务调度的方法、装置和智能设备 | |
US20010052055A1 (en) | Active window management for reorder buffer | |
US7793086B2 (en) | Link stack misprediction resolution | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |