CN114546497A - 乱序处理器中队列的访问方法及装置 - Google Patents
乱序处理器中队列的访问方法及装置 Download PDFInfo
- Publication number
- CN114546497A CN114546497A CN202210446040.3A CN202210446040A CN114546497A CN 114546497 A CN114546497 A CN 114546497A CN 202210446040 A CN202210446040 A CN 202210446040A CN 114546497 A CN114546497 A CN 114546497A
- Authority
- CN
- China
- Prior art keywords
- item
- dequeue
- target
- items
- queue
- 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 74
- 238000012545 processing Methods 0.000 claims description 18
- 239000013598 vector Substances 0.000 claims description 13
- 230000006399 behavior Effects 0.000 claims description 10
- 239000000126 substance Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 230000008520 organization Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 238000003672 processing method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种乱序处理器中队列的访问方法及装置,涉及处理器技术领域,包括N项的队列分为L个体,每个体包括N/L项,N为L的整数倍;方法包括:获取当前拍的最大可出队项的数量M;确定队头指针所在的体以及在所在体中所在的项;根据队头指针所在的体、在所在体中所在的项、数量M以及指定的指令退出顺序,确定M个出队项中各出队项所在的目标体、在所在目标体中所在的目标项;根据各出队项所在的目标体以及目标项,分别从对应目标体中选出对应的项,并将对应的项的信息读出。可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能,以解决因队列项内容的选择读出逻辑复杂而导致的处理器性能差、功耗高的问题。
Description
技术领域
本公开涉及处理器技术领域,特别涉及一种乱序处理器中队列的访问方法及装置。
背景技术
在程序员编写程序的时候,认为程序的执行都是按照串行的顺序运行的,只有前面的一条指令执行完了,后面的指令才可以执行,因此处理器在执行程序的时候,也必须保证这种串行的结果,否则就会和程序最初的预想行为不一致。为了提高指令执行效率,现代的处理器都是乱序处理器,乱序处理器的指令就不会按照程序中指定的顺序在处理器中流动,只要满足执行条件,后面的指令可以越过前面的指令先执行,以提高指令的执行速度。
为保证乱序处理器的程序执行结果跟顺序处理器串行执行的结果一致,在处理器中需要用多进多出的连续队列,按照进入流水线的顺序记录处理器中的所有指令,以保证处理器能够乱序执行指令,顺序提交指令。这些多进多出连续队列包括ROB(ReorderBuffer,重定序缓存)、B-ROB(Branch Reorder Buffer,转移重定序缓存)、FTQ(FetchTarget Queue,转移队列)等。多进多出连续队列的项数都比较多,比如当前的高性能处理器中,ROB一般为256项以上,而且每项存储的位数也非常多,包括指令在ROB中是否有效、指令操作码、指令逻辑目的寄存器号、指令物理目的寄存器号、指令旧物理目的寄存器号、程序计数器、指令的状态、指令在转移队列FTQ中的索引、异常的类型等。这些多进多出的连续队列的队列项内容的选择读出逻辑复杂,时序处于处理器的关键路径上,直接影响着处理器的频率,从而导致处理器的性能较差,而且耗费比较多的功耗。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本公开的目的在于提出一种乱序处理器中队列的访问方法及装置,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
本公开第一方面实施例提供一种乱序处理器中队列的访问方法,包括N项的队列分为L个体Bank,且每个所述体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍;方法包括:获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;从所述L个体Bank中确定队头指针Head所在的体,以及确定所述队头指针Head在所在体中所在的项;根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项;根据各所述出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
根据本公开实施例的乱序处理器中队列的访问方法,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
本公开第二方面实施例提供一种乱序处理器中队列的访问装置,包括N项的队列分为L个体Bank,且每个所述体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍;所述装置包括:第一获取模块,用于获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;第一确定模块,用于从所述L个体Bank中确定队头指针Head所在的体,以及确定所述队头指针Head在所在体中所在的项;第二确定模块,用于根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项;第一处理模块,用于根据各所述出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
根据本公开实施例的乱序处理器中队列的访问装置,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
本公开第三方面实施例提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行如上述实施例所述的乱序处理器中队列的访问方法。
本公开第四方面实施例提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上述实施例所述的乱序处理器中队列的访问方法。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为相关技术中ROB的示例图;
图2为相关技术中包括N项的队列的示例图;
图3为本公开一实施例中的队列的示例图;
图4为本公开一实施例中的队列的另一示例图;
图5为本公开一实施例中的队列的另一示例图;
图6为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图;
图7为本公开一实施例中的队列的另一示例图;
图8为本公开一实施例所提供的一种乱序处理器中队列的访问方法的另一流程示意图;
图9为本公开一实施例所提供的一种乱序处理器中队列的访问方法的另一流程示意图;
图10为根据本公开一实施例所提供的队列的另一示例图;
图11为根据本公开一实施例所提供的队列的另一示例图;
图12为根据本公开一实施例所提供的队列的另一示例图;
图13为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图;
图14为根据本公开一实施例所提供的队列的另一示例图;
图15为根据本公开一实施例所提供的队列的另一示例图;
图16为本公开一实施例所提供的一种乱序处理器中队列的访问装置的结构示意图;
图17为用于实现本公开实施例的乱序处理器中队列的访问方法的示例性电子设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
可以理解的是,当一条指令到达流水线的提交阶段后,会将这条指令在ROB中标记为已完成的状态,表示这条指令已经计算完毕,并不表示它可以离开流水线。流水线中所有指令都按照进入流水线的顺序在重定序缓存中进行了记录,只有在重定序缓存中这条指令之前的最旧的那些条指令都变成已完成的状态时,这条指令才允许离开流水线,并使用它的结果对处理器的状态进行更新,此时这条指令退休(retire)了,从这个过程可以看出,一条指令需要在流水线的提交阶段等待一段时间,才可以从流水线中退休,这样可以使程序在乱序处理器中执行的时候有串行的结果。对于一个每拍(每周期)允许多条指令退出ROB的乱序处理器来说,所有离开流水线的指令要根据程序中原始的顺序来更新处理器的状态,ROB是多进多出的连续队列。
指令从队列中退出时,需要把该项在队列中的每一位的信息都读出来,然后再更新寄存器的状态,其实读出就是一个选择逻辑,以一个包含N项的重定序缓存ROB为例,N为大于1的整数,要读出其中的一项,需要从N项中把这一项的内容选择出来,如果每一项有100位,那么每一位都要从N项的对应位中选出要读出的这一位,即要读出一项就要做100个N选一的选择;如果该队列一次可以退出M’项(M’条指令)的话,那么一次就需要做100*M’个N选一。
在ROB的每一项中存储的指令的相关信息,包括:这条指令在ROB中是否有效(Valid),1位;指令操作码(OP),8位;指令逻辑目的寄存器号(Dest),5位;指令物理目的寄存器号(PDEST),8位;指令旧物理目的寄存器号(ODEST),8位;程序计数器(PC,ProgramCounter),64位;指令的状态(State),2位,包括对应的指令进入(Enter)、写回(WriteBack)、提交(Commit)等状态;指令在转移队列FTQ中的索引(FtqIndex),7位;异常的类型(Exception),4位;还有其他一些域,比如标识存数(Store)指令的数据是否写回、中断的控制等等,一般ROB每项的位数都很多,至少100位。
改变程序流程的分支指令到达执行级的分支运算单元后,才能得到跳转结果,因此,分支预测的正确性也是要在执行级才能知道,所以需要将之前的预测结果保存,然后在执行级进行比较,发现预测失败的情况就需要重定向PC(Program Counter,程序计数器)、刷新流水线、恢复流水线错误执行前的状态。因此,需要在取指阶段结束后将分支预测信息储存起来,转移队列或转移重定序缓存就是充当这样的缓存功能,其中包含了分支指令的PC以及相关联的分支预测信息,这些信息可以供流水线在执行阶段时引用,一旦指令被提交就会按顺序退出ROB,同时也会通知FTQ,将该指令也移出FTQ,FTQ队列是多进多出的连续队列。同时,FTQ还有一个作用是可以接收执行级分支指令的执行信息,用来更新各个分支预测器。在FTQ中存储的信息,包括:指令块在FTQ中是否有效(Valid),1位;用于分支误预测恢复的RAS(Return Address Stack,返回地址栈)信息(RAS),69位,包括RAS栈顶指针、栈顶项信息的备份等;用于分支误预测恢复的分支历史信息(Hist),226位;取指块的起始PC(StartPC),64位;无条件直接跳转的跳转地址(JalTarget),64位;下一个取指地址(UpdateTarget),64位;预测器的预测信息(PredictorMeta),512位,包括标签分支预测器(Tagged Predictor,简称TAGE)的饱和计数器、各个预测表的预测结果等;FTQ还有其他一些域,比如状态信息域表示每个指令块内每条指令的状态、压缩指令相关的域等等,一般FTQ每项的位数都非常多,至少1000位。
参考图1,对于ROB,指令写入顺序为从队列的最上面一项(对应最上面一行)开始入队,直至最下面一项(对应最下面一行),最早入队即最旧的(Oldest)指令在最上面一项,最晚入队即最新的(Newest)指令在已写入指令的项中的最下面一项。其中,图1中的队头指针Head记录退出队列的指令的起始位置;队尾指针Tail记录进入队列的指令的起始位置;右侧的一列为完成(complete)信号,表示对应指令的状态,其中,完成信号为1,表示对应的指令的状态为Commit状态,完成信号为0,表示对应的指令的状态不为Commit状态。
对于一个每拍最多可以退出4条指令的处理器,在执行过程中,从ROB中最旧的一些指令(队头指针Head指定的指令)中,选择那些已经变为Commit状态的指令,使其从流水线中退出。
ROB中的指令要连续退出,需要从ROB中最旧的指令开始(队头指针Head指定的指令)连续的四个Commit信号进行判断,如果某项指令对应的完成(complete)信号为0,即该项的状态不是Commit状态,那么该项和它后面的所有指令都不允许在本周期退出。
相关技术中的队列的组织如图2所示。指令写入顺序为从队列的最上面一项(对应最上面一行)开始入队,直至最下面一项(对应最下面一行)。参考图2,队列包括N项,分别对应第0至第N-1行,其中N为大于1的整数。假设每拍最多可退出M条指令,其中M为大于1的整数,则M条指令各自对应的队头指针(即图2中的队头指针0、队头指针1……队头指针M-2、队头指针M-1)分别指向退出队列的M条指令的位置。对于图2所示的包含N项,每拍最多退出M条指令的多进多出连续队列,出队项每一位的选择逻辑就是M个N选一,假设队列中每一项包括K位,则出队项的选择逻辑就是K*M个N选一。其中,K为正整数。出队项,为即将出队的项,也可理解为即将有指令退出的项。
以N为32,M为4为例,读出4项中各个位的信息,包括4个32选一。其中,每个32选一,需要先并行的做4个从8个里面选一个,再从4个里面选一个,即每个32选一相当于4个8选一,再加1个4选一。那么,4个32选一相当于16个8选一,加上4个4选一。由于队列中的每一位都有上述的选择逻辑,则对于存储上百位的数据的处理器例如ROB,就需要上百个的16个8选一加上4个4选一,这会对延迟和功耗有很大的影响。
本公开实施例为了减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能,将队列按照如下方式组织:包括N项的队列分为L个体Bank,且每个体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍,并基于这种队列的组织方式,提出一种乱序处理器中队列的访问方法,方法包括:获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;从L个体Bank中确定队头指针Head所在的体,以及确定队头指针Head在所在体中所在的项;根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体,以及在所在目标体中所在的目标项;根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。其中,可出队项,为允许出队的项,M为当前拍的允许出队的项的最大数量,也可以理解为每拍最多可退出的指令的数量。
由于将包括N项的队列分为L个体Bank,每个体Bank包括N/L项,在当前拍的最大可出队项的数量为M时,根据M个出队项中各出队项所在的目标体,以及在所在目标体中所在的项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出,那么每条指令的每一位的选择逻辑为1个N/L选一,M条指令的每一位的选择逻辑即为M个N/L选一。假设队列中每项包括K位,则出队项的选择逻辑为K*M个N/L选一,相比相关技术的K*M个N选一,本公开的技术方案,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
下面结合附图3,对本公开实施例提出的乱序处理器中队列的组织方式进行说明。
参考图3,本公开实施例中,包括N项的队列分为L个体Bank,且每个体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍。
其中,L个体Bank可以依次编号,每个体Bank包括的各项可以对应该Bank的各行。本公开各附图及各实施例以L个体Bank依次编号为0至L-1之间的整数,即L个体Bank分别为体0(Bank0)、体1(Bank1)、体2(Bank2)……体L-2(BankL-2)、体L-1(BankL-1),每个体Bank包括的N/L项分别对应该Bank的第0行至第N/L-1行为例进行示意及说明。其中,0至N/L-1即为每个Bank中各行各自对应的行号。
其中,队列可以为ROB队列或B-ROB队列或FTQ队列等多进多出队列。队头指针Head记录退出队列的指令的起始位置,即队头所在Bank编号及行号。队尾指针Tail记录进入队列的指令的起始位置,即队尾所在Bank编号及行号。
另外,对于以上述方式组织的队列,可以根据需要,预先指定指令退出顺序和指令写入顺序。其中,指令退出顺序用于规定指令从队列中退出的顺序;指令写入顺序,用于规定指令写入队列的顺序。
比如,以指令写入顺序为例,指定的指令写入顺序可以为先行后体的顺序。其中先行后体的顺序可以理解为:指令从队尾指针Tail所在项开始入队,按照体Bank的编号从小到大、行号从小到大的顺序,依次写入队列的Tail所在项的同一行中从Tail所在项开始的空项,再依次写入队列的Tail所在项的下一行(即行号为Tail所在项对应行号+1的行)的空项,直至指令写入队列最后一项(即BankL-1的第N/L-1行),此时,最旧的(Oldest)指令在第0行,最新的(Newest)指令在已写入指令的行中最下面的行(即第N/L-1行),指令再重新从Bank0的第0行开始入队。即,在队尾指针Tail指向Bank0的第0行时,指令从Bank0的第0行开始入队,依次写入Bank0至BankL-1的第0行,当每个体的第0行都写满,指令顺序写入Bank0至BankL-1的第1行,以此类推直至指令写入队列最后一项(即BankL-1的第N/L-1行),指令再重新从Bank0的第0行开始入队;在队列中已有指令的情况下,每次有指令入队时,指令从队尾指针Tail所在项开始入队,按照上述顺序,写入队列中的空项,直至指令写入队列最后一项,指令再重新从Bank0的第0行开始入队。
另外,参考图3,可以对队列进行初始化,初始化时,将队列中各项的有效位置为0(无效)。并且,指定的指令写入顺序、指定的指令退出顺序与上述先行后体的指令写入顺序相同时,初始化后队头指针Head为Bank0的第0行,队尾指针Tail为Bank0的第0行。
按照上述先行后体的指令写入顺序,在初始化时队尾指针Tail指向Bank0的第0行,指令从Bank0的第0行开始入队,依次写入Bank0至BankL-1的第0行,当每个体的第0行都写满,指令顺序写入Bank0至BankL-1的第1行,以此类推直至指令写入队列最后一项(即BankL-1的第N/L-1行),指令再重新从Bank0的第0行开始入队。在队列中已有指令的情况下,每次有指令入队时,指令从队尾指针Tail所在项开始入队,按照上述顺序,写入队列中的空项,直至指令写入队列最后一项,指令再重新从Bank0的第0行开始入队。
指令入队后,将进入的指令信息写入进入的项,下一拍队尾指针Tail指向当前拍最后一条入队项的下一项。其中,此处的“下一项”,根据指定的指令写入顺序确定。以上述先行后体的指令写入顺序为例,如果此拍进入的最后一项(最后一条入队项)所在体是BankL-1,在BankL-1中所在行的行号大于等于0且小于N/L-1,则下一拍队尾指针Tail所在体为Bank0,在Bank0中所在行的行号,为前一拍进入的最后一项所在行的行号+1;如果此拍进入的最后一项所在体是BankL-1,在BankL-1中所在行的行号为N/L-1,则下一拍队尾指针Tail所在体为Bank0,在Bank0中所在行的行号为0。指令入队后已入队项的有效位置为1(有效)。其中,入队项,为入队的项,即指令进入的项。
举例来说,参考图4,按照上述先行后体的指令写入顺序,初始化后,当前拍队尾指针Tail为Bank0的第0行,当一拍有L+1条指令进入队列,指令依次写入Bank0的第0行、Bank1的第0行、Bank2的第0行……至BankL-1的第0行,所有Bank第0行存满,指令按照上述指令写入顺序写入Bank0的第1行,下一拍队尾指针Tail为此拍最后一条入队项(Bank0的第1行)的下一项,即Bank1的第1行。
参考图4,在队列中已有指令的情况下,当前拍队尾指针Tail为Bank1的第1行,当一拍需要进入2条指令时,指令从当前拍队尾指针Tail所在项即Bank1的第1行开始入队,按照上述指令写入顺序进入Bank1的第1行和Bank2的第1行,下一拍队尾指针Tail为此拍最后一条入队项的下一项,即如图5所示,Bank3的第1项。指令入队后,将进入的指令信息写入进入的项。
另外,本公开实施例中,可以设置L大于M和P中的最大值,其中,M为每拍最大可出队项的数量,P为每拍最大可入队项数,以保证每个体每一拍仅操作一条入队指令和/或一条出队指令。
需要说明的是,上述指令写入顺序仅为示例性说明,不能理解为对本方案的限制,本领域技术人员可以根据需要采用其它的指令写入顺序将指令写入队列,本公开对此不作限制。比如,指定的指令写入顺序可以为:指令从队尾指针Tail所在项开始入队,按照体Bank的编号从小到大、行号从大到小的顺序,依次写入队列的Tail所在项的同一行中从Tail所在项开始的空项,再依次写入队列的Tail所在项的上一行(即行号为Tail所在项对应行号-1的行)的空项,直至指令写入BankL-1的第0行,指令再重新从Bank0的第N/L-1行开始入队。
另外,本公开各实施例在进行说明时,以指定的指令退出顺序、指定的指令写入顺序与上述先行后体的指令写入顺序相同为例进行说明。
下面参照附图描述本公开实施例提出的乱序处理器中队列的访问方法及装置。首先将参照附图描述本公开实施例提出的乱序处理器中队列的访问方法。
图6为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图。
如图6所示,该乱序处理器中队列的访问方法包括以下步骤:
步骤601,获取当前拍的最大可出队项的数量M,其中,M为大于1的整数。
其中,N项的队列分为L个体Bank,且每个体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍。
其中,可出队项,为允许出队的项。M为当前拍的允许出队的项的最大数量,也可以理解为每拍最多可退出的指令的数量。
其中,队列可以为ROB队列或B-ROB队列或FTQ队列等多进多出队列。相应的,M为大于1的整数。
步骤602,从L个体中确定队头指针所在的体,以及确定队头指针在所在体中所在的项。
本公开实施例中,每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行时,队头指针Head在所在体中所在的项,即为队头指针Head在所在体中所在的行。相应的,本公开实施例中,可以确定队头指针Head所在的体的编号,以及确定队头指针Head在所在体中所在的行的行号。
步骤603,根据队头指针所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中各出队项所在的目标体,以及在所在目标体中所在的目标项。
其中,出队项,为即将出队的项,即,即将有指令退出的项。
其中,与上述先行后体的指令写入顺序相同,指定的指令退出顺序也可以为先行后体的顺序,即:指令从队头指针Head所在项开始出队,按照体Bank的编号从小到大、行号从小到大的顺序,Head所在项的同一行中从Head所在项开始依次退出队列,Head所在项的下一行(即行号为Head所在项对应行号+1的行)的项再依次退出队列,直至最后一项(即BankL-1的第N/L-1行)退出队列,再重新从Bank0的第0行开始退出队列。
本公开实施例中,每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行时,可以根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体的编号以及在所在目标体中所在的目标行的行号。
举例来说,假设指定的指令退出顺序为先行后体的顺序。参考图7,假设N为32的队列分为4个体Bank,4个体Bank依次编号为0、1、2、3,即4个体Bank分别为Bank0、Bank1、Bank2、Bank3。每个体的行数为8行,分别为第0行至第7行。假设当前拍的最大可出队项的数量M为4。当前拍队头指针Head所在的体为Bank2,在所在体中所在行的行号为0。
则可以将连续4条指令按照指令出队顺序分别编号为0、1、2、3。其中,编号为0的指令对应的出队项所在的目标体为Bank2,该出队项在所在目标体中所在目标行的行号为0。编号为1、2、3的指令对应的出队项可以根据指定的指令退出顺序确定为:编号为1的指令对应的出队项所在的目标体为Bank3,该出队项在所在目标体中所在目标行的行号为0;编号为2的指令对应的出队项所在的目标体为Bank0,该出队项在所在目标体中所在目标行的行号为1;编号为3的指令对应的出队项所在的目标体为Bank1,该出队项在所在目标体中所在目标行的行号为1。
步骤604,根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
可以理解的是,队列中的每个项包括多个位,在本公开的实施例中,根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项后,可以将对应的项中的各个位的信息读出,也可以将对应的项中的部分位的信息读出,本申请对此不作限制。
本公开实施例中,由于将包括N项的队列分为L个体Bank,每个体Bank包括N/L项,那么每条指令的每一位的选择逻辑为1个N/L选一,M条指令的每一位的选择逻辑即为M个N/L选一。假设队列中每项包括K位,则出队项的选择逻辑为K*M个N/L选一。
以N为32,L为4,M为4,K为100为例,本公开实施例中出队项的选择逻辑为100*4个8选一,相比相关技术中的100*16个8选一加100*4个4选一,本公开实施例中出队项的选择逻辑大幅度减少,相应的减少了选择器的数量,从而减少延迟和功耗,提高处理器的性能。
另外,对于32项分4个体,每个体包括8项的队列,队头指针Head所在体的编号为2位,所在行的行号为3位,如果一拍需要退出4条指令,则将从当前拍队头指针Head所在项开始连续4项指令的Head所在行的行号进行译码,Head计算占用的逻辑非常小,可以忽略不计。
综上,本公开实施例提出的乱序处理器中队列的访问方法,获取当前拍的最大可出队项的数量M,其中,M为大于1的整数,从L个体Bank中确定队头指针Head所在的体,以及确定队头指针Head在所在体中所在的项,根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体,以及在所在目标体中所在的目标项,根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
下面结合图8,对本公开实施例提供的乱序处理器中队列的访问方法中,根据Head所在的体、在所在体中所在的项、数量M以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体,以及在所在目标体中所在的目标项的过程进行进一步说明。
图8为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图。
如图8所示,该乱序处理器中队列的访问方法中,步骤603包括以下步骤:
步骤801,对于编号为m的出队项,在m为0的情况下,将队头指针所在的体确定为出队项所在的目标体,并将队头指针在所在体中所在的行,确定为出队项在目标体中所在的目标行。
本公开实施例中,L个体Bank依次编号为0至L-1之间的整数;每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行;M个出队项按照指定的指令退出顺序,依次编号为0至M-1之间的整数。本申请实施例中将出队项的编号用m表示,相应的,m为大于等于0且小于等于M-1的整数。
步骤802,对于编号为m的出队项,在m不为0的情况下,根据编号为m-1的出队项所在的体、在所在体中所在的行,以及指定的指令退出顺序,确定编号为m的出队项所在的目标体以及在所在目标体中所在的目标行。
在本公开的实施例中,对于编号为m的出队项,在m不为0,即m为大于0且小于等于M-1的整数的情况下,可以根据编号为m-1的出队项所在的体、在所在体中所在的行,以及指定的指令退出顺序,确定编号为m的出队项所在的目标体以及在所在目标体中所在的目标行。
在本公开的实施例中,与上述先行后体的指令写入顺序相同,指定的指令退出顺序也可以为先行后体的顺序,即:指令从队头指针Head所在项开始出队,按照体Bank的编号从小到大、行号从小到大的顺序,Head所在项的同一行中从Head所在项开始依次退出队列,Head所在项的下一行(即行号为Head所在项对应行号+1的行)的项再依次退出队列,直至最后一项(即BankL-1的第N/L-1行)退出队列,再重新从Bank0的第0行开始退出队列。相应的,步骤802具体可以包括:
在指令退出顺序为先行后体,编号为m-1的出队项所在体的编号i小于L-1,在所在体中所在行为第j行,j大于等于0且小于等于N/L-1的情况下,将编号为i+1的体,确定为编号为m的出队项所在的目标体,将编号为i+1的体中第j行,确定为编号为m的出队项在所在目标体中的目标行;
在指令退出顺序为先行后体,编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j大于等于0且小于N/L-1的情况下,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第j+1行,确定为编号为m的出队项在所在目标体中的目标行;
在编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j等于N/L-1的情况下,基于指令退出顺序为先行后体,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第0行,确定为编号为m的出队项在所在目标体中的目标行。
上述实施例,对确定编号为m(m为大于等于0且小于等于M-1的整数)的出队项所在的目标体以及在所在目标体中所在的目标行的过程进行了说明。在一种可能的实现形式中,L个体Bank依次编号为0至L-1之间的整数,每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行,指令退出顺序为先行后体,M个出队项按照指定的指令退出顺序,依次编号为0至M-1之间的整数,Head所在的体的编号为i’(i’为大于等于0且小于等于L-1的整数),在所在体中所在行为第j’行(j’为大于等于0且小于等于N/L-1的整数)时,可以设置L大于等于数量M,即出队时每个体Bank每拍最多只有一条指令出队,在这种情况下,可以通过以下方式,确定M个出队项中编号为m(m为大于等于0且小于等于M-1的整数)的出队项所在的目标体,以及在所在目标体中所在的目标项:
对于编号为m的出队项,在i’+m小于或等于L-1的情况下,基于指令退出顺序为先行后体,将编号为i’+m的体,确定为出队项所在的目标体,将编号为i’+m的体中第j’行,确定为出队项在所在目标体中的目标行;
对于编号为m的出队项,在i’+m大于L-1的情况下,基于指令退出顺序为先行后体,将编号为i’+m-L的体,确定为出队项所在的目标体,将编号为i’+m-L的体中第j’+1行,确定为出队项在所在目标体中的目标行;其中,m为大于等于0且小于等于M-1的整数。
即,确定各出队项所在目标体的编号后,如果出队项所在目标体的编号大于等于当前拍Head所在体Bank的编号,则出队项在该目标体中当前拍Head所在行;如果出队项所在目标体的编号小于当前拍Head所在体Bank的编号,则出队项在该目标体中当前拍Head所在行+1行。
继续参考图7,假设N为32的队列分为4个体Bank,分别为Bank0、Bank1、Bank2、Bank3。每个体的行数为8行,分别为第0行至第7行。当前拍的最大可出队项的数量M为4。当前拍队头指针Head所在的体为Bank2,在所在体中所在行的行号为0。
则确定4个出队项所在的目标体分别为Bank2、Bank3、Bank0、Bank1后,对于所在的目标体为Bank2的出队项,由于Bank2的编号等于Head所在的体Bank2的编号,则该出队项在所在目标体Bank2中的目标行为当前拍Head所在行,即第0行,行号为0;对于所在的目标体为Bank3的出队项,由于Bank3的编号大于Head所在的体Bank2的编号,则该出队项在所在目标体Bank3中的目标行为当前拍Head所在行,即第0行,行号为0;对于所在的目标体为Bank0或Bank1的出队项,由于Bank0与Bank1的编号小于Head所在体Bank2的编号,则该出队项在所在目标体Bank0或Bank1中的目标行为当前拍Head所在行的下一行,即第1行,行号为0+1即1。
综上,本公开实施例提出的乱序处理器中队列的访问方法,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能,且根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,可以准确确定M个出队项中的各出队项所在的目标体以及在所在目标体中所在的目标项。
下面结合图9,对本公开实施例提供的乱序处理器中队列的访问方法进一步说明。
图9为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图。
如图9所示,该乱序处理器中队列的访问方法包括以下步骤:
步骤901,获取当前拍的最大可出队项的数量M,其中,M为大于1的整数。
步骤902,从L个体中确定队头指针所在的体,以及确定队头指针在所在体中所在的项。
步骤903,根据队头指针所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体,以及在所在目标体中所在的目标项。
其中,上述步骤901-903的具体实现过程及原理,与上述实施例相似,此处不再赘述。
步骤904,根据各出队项所在的目标项,译码出各出队项的位向量。
在本公开的实施例中,可以采用以下方式,根据各出队项所在的目标项,译码出各出队项的位向量:设置位向量的维度为目标体包括的项数,并设置位向量中只有目标项对应位置为1,其它位置全部为0。
比如,继续图7所示的示例,对于在Bank2中的出队项,可以根据该出队项在第0行,译码出该出队项的位向量{00000001};对于在Bank3中的出队项,可以根据该出队项在第0行,译码出该出队项的位向量{00000001};对于在Bank0中的出队项,可以根据该出队项在第1行,译码出该出队项的位向量{00000010};对于在Bank1中的出队项,可以根据该出队项在第1行,译码出该出队项的位向量{00000010}。
步骤905根据各出队项所在的目标体以及对应的位向量,分别从对应的目标体中选出对应的项,并将对应的项的信息读出,其中,对应的项的信息包括状态位信息。
其中,状态位信息,为出队项包括的多个位中的状态位所存储的信息,用于表示指令的状态,比如进入、写回、提交等状态。
步骤906,根据各出队项对应的状态位信息,从各出队项中获取符合出队条件的目标出队项。
本公开实施例中,出队项包括队头指针Head在所在体中所在的项,步骤906可以通过以下方式实现:
从队头指针Head在所在体中所在的项开始,按照指定的指令退出顺序,根据各出队项对应的状态位信息,依次确定对应出队项的状态是否符合出队条件;在各出队项中任意一项出队项的状态不符合出队条件,和/或符合出队条件的出队项的数量达到数量M的情况下,停止执行根据各出队项对应的状态位信息,依次判断对应出队项的状态是否符合出队条件的步骤;将停止执行根据各出队项对应的状态位信息,依次判断对应出队项的状态是否符合出队条件的步骤之后,已确定的符合出队条件的出队项,确定为目标出队项。
其中,确定某个出队项的状态是否符合出队条件,即判断该出队项对应的状态位信息是否表示即将出队指令处于提交(Commit)状态,在该出队项对应的状态位信息表示即将出队指令处于提交(Commit)状态时,即可确定该出队项符合出队条件。
在本公开实施例中,在队头指针Head在所在体中所在的项符合出队条件时,可以按照指定的指令退出顺序,判断下一个出队项的状态是否符合出队条件,当下一个出队项的状态符合出队条件时,继续判断再下一个出队项的状态是否符合出队条件,直至出队项的状态不符合出队条件,或符合出队条件的出队项的数量达到数量M,判断停止,将判断停止后已确定的符合出队条件的出队项,确定为目标出队项。
步骤907,将目标出队项退出队列,并将目标出队项的有效位置为无效。
在本公开的实施例中,目标出队项退出队列后,下一拍对应的Head,指向当前拍最后一个已出队的项的下一项,其中,此处的“下一项”,根据指定的指令退出顺序确定。
以指定的指令退出顺序为先行后体的顺序为例,如果当前拍最后一个已出队的项不是整个队列的最后一项(即BankL-1的第N/L-1行),则下一拍对应的队头指针Head,为当前拍最后一个已出队的项的下一项。
参考图10,假设从当前拍Head所在项开始有L-1个出队项符合出队条件,可以退出队列,即从Bank2的第0行开始L-1个目标出队项退出队列,Bank2的第0行、Bank3中第0行……BankL-2中第0行、BankL-1中第0行及Bank0的第1行出队。参考图11,目标出队项退出队列后,下一拍对应的Head为当前拍最后一个已出队的项的下一项(即下一拍对应的Head为Bank1的第1行)。
参考图12,如果当前拍最后一个已出队的项为整个队列的最后一项(即BankL-1的第N/L-1行),则下一拍对应的队头指针Head,为Bank0的第0行。
综上,本公开实施例提出的乱序处理器中队列的访问方法,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
上述实施例中说明了对乱序处理器中队列的组织方式为本公开实施例中所示的组织方式时,本公开实施例提供的乱序处理器中队列的访问方法中,指令的出队方法,下面参考图13,对乱序处理器中队列的组织方式为本公开实施例中所示的组织方式时,本公开实施例提供的乱序处理器中队列的访问方法中,指令的入队方法进行说明。
图13为本公开一实施例所提供的一种乱序处理器中队列的访问方法的流程示意图。
如图13所示,该乱序处理器中队列的访问方法,还包括以下步骤:
步骤1301,获取当前拍的X条入队指令,其中,X为大于0且小于或等于最大可入队项数P的整数。
其中,入队指令,为当前拍需要入队的指令。
步骤1302,从L个体中确定队尾指针所在的体,以及确定队尾指针在所在体中所在的项。
本公开实施例中,每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行时,队尾指针Tail在所在体中所在的项,即为队尾指针Tail在所在体中所在的行。相应的,本公开实施例中,可以确定队尾指针Tail所在的体的编号,以及确定队尾指针Tail在所在体中所在的行的行号。
步骤1303,判断队列是否满足预设条件,若是,则执行步骤1304,否则,执行步骤1305。
其中,预设条件,为用于判断队列是否满的条件。在队列满足预设条件时,可以确定队列非满,在队列不满足预设条件时,可以确定队列满。
在本公开实施例中,可以设置预设条件,包括以下条件:队列中空项的数量Y大于或等于预设阈值,预设阈值为当前拍的入队指令的数量X,或者为最大可入队项数P。
步骤1304,从队尾指针在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效。
其中,指定的指令写入顺序,可以为上述实施例中的先行后体的顺序,也可以为其它顺序,本公开对此不作限制。
在本公开的实施例中,在队列满足预设条件的情况下,即队列非满的情况下,可以从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效。
另外,将X条入队指令写入队列中的空项之后,下一拍对应的队尾指针Tail,指向当前拍最后写入入队指令的空项的下一项;其中,下一项根据指定的指令写入顺序确定。其中,当前拍最后写入入队指令的空项,即为当前拍最后一条入队项。
步骤1305,控制X条入队指令继续等待。
在本公开的实施例中,无论预设阈值为当前拍的入队指令的数量X,还是为最大可入队项数P,在队列不满足预设条件的情况下,即队列满的情况下,均可以采用以下处理方法:不论队列中是否有空项,控制待入队的X条入队指令继续等待。
参考图14,在预设阈值为当前拍的入队指令的数量X的情况下,在当前拍需要进入4条指令,即X为4时,若整个队列只有3项空项(即队列中空项的数量Y为3),则判断为队列不满足预设条件,即队列满,从而可以控制待入队的X条入队指令继续等待。
在本申请的实施例中,预设阈值为当前拍的入队指令的数量X时,在队列不满足预设条件的情况下,即队列满的情况下,可以采用以下处理方法:从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令中的Y条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效;控制X条入队指令中除Y条入队指令之外的其它入队指令继续等待。下一拍对应的Tail指向此拍最后一条入队项的下一项。
参考图15,在预设阈值为当前拍的入队指令的数量X的情况下,在当前拍需要进入4条指令,即X为4时,若整个队列只有3项空项(即队列中空项的数量Y为3),则选取4条入队指令中前3条入队指令进入队列,其余一条入队指令继续等待,下一拍对应的Tail指向此拍最后一条入队项的下一项,即如图15所示,下一拍对应的Tail指向Bank3的第1行。
在本申请的实施例中,预设阈值为最大可入队项数P时,在队列不满足预设条件的情况下,即队列满的情况下,可以采用以下处理方法:在队列不满足预设条件的情况下,判断队列中空项的数量Y是否小于入队指令的数量X;若是,则从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令中的Y条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效,以及控制X条入队指令中除Y条入队指令之外的其它入队指令继续等待;否则,从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效。
举例来说,在预设阈值为最大可入队项数P的情况下,假设P为6,当前拍需要进入4条指令,即X为4,整个队列只有5项空项(即队列中空项的数量Y为5),则可以判断为队列不满足预设条件,即队列满,然而由于队列中空项的数量Y大于入队指令的数量X,则可以从Tail在所在体中所在的项开始,根据指定的指令写入顺序,将4条入队指令写入队列的空项,并将已写入的空项的有效位置为有效。
综上,通过获取当前拍的X条入队指令,其中,X为大于0且小于或等于最大可入队项数P的整数,从L个体Bank中确定队尾指针Tail所在的体,以及确定队尾指针Tail在所在体中所在的项,判断队列是否满足预设条件,若是,从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效,否则,控制X条入队指令继续等待,实现了将指令按照指定的指令写入顺序,写入乱序处理器中的队列,且在队列满的情况下,按照预设的处理方式,对X条入队指令进行处理。
与上述图1至图15实施例提供的乱序处理器中队列的访问方法相对应,本公开还提供一种乱序处理器中队列的访问装置,由于本公开实施例提供的乱序处理器中队列的访问装置与上述图1至图15实施例提供的乱序处理器中队列的访问方法相对应,因此在乱序处理器中队列的访问方法的实施方式也适用于本公开实施例提供的乱序处理器中队列的访问装置,在本公开实施例中不再详细描述。
下面参照附图描述根据本公开实施例提出的乱序处理器中队列的访问装置。
图16为本公开一实施例所提供的一种乱序处理器中队列的访问装置的结构示意图。
如图16所示,该乱序处理器中队列的访问装置1600,包括:
第一获取模块1601,用于获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;
第一确定模块1602,用于从L个体Bank中确定队头指针Head所在的体,以及确定队头指针Head在所在体中所在的项;
第二确定模块1603,用于根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体,以及在所在目标体中所在的目标项;
第一处理模块1604,用于根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
其中,包括N项的队列分为L个体Bank,且每个体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍。
在本公开的一些实施例中,L个体Bank依次编号为0至L-1之间的整数;每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行; M个出队项按照指定的指令退出顺序,依次编号为0至M-1之间的整数;
第二确定模块1603,包括:
第一确定单元,用于对于编号为m的出队项,在m为0的情况下,将队头指针Head所在的体确定为出队项所在的目标体,并将队头指针Head在所在体中所在的行,确定为出队项在目标体中所在的目标行;
第二确定单元,用于对于编号为m的出队项,在m不为0的情况下,根据编号为m-1的出队项所在的体、在所在体中所在的行,以及指定的指令退出顺序,确定编号为m的出队项所在的目标体以及在所在目标体中所在的目标行;
其中,m为大于等于0且小于等于M-1的整数。
在本公开的一些实施例中,第二确定单元,用于:
在指令退出顺序为先行后体,编号为m-1的出队项所在体的编号i小于L-1,在所在体中所在行为第j行,j大于等于0且小于等于N/L-1的情况下,将编号为i+1的体,确定为编号为m的出队项所在的目标体,将编号为i+1的体中第j行,确定为编号为m的出队项在所在目标体中的目标行;
在指令退出顺序为先行后体,编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j大于等于0且小于N/L-1的情况下,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第j+1行,确定为编号为m的出队项在所在目标体中的目标行;
在编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j等于N/L-1的情况下,基于指令退出顺序为先行后体,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第0行,确定为编号为m的出队项在所在目标体中的目标行。
在本公开的一些实施例中,L个体Bank依次编号为0至L-1之间的整数;每个体Bank包括的N/L项分别对应Bank的第0行至第N/L-1行;指令退出顺序为先行后体;M个出队项按照指定的指令退出顺序,依次编号为0至M-1之间的整数;L大于等于数量M;队头指针Head所在的体的编号为i’,在所在体中所在行为第j’行;
第二确定模块1603,包括:
第三确定单元,用于对于编号为m的出队项,在i’+m小于或等于L-1的情况下,基于指令退出顺序为先行后体,将编号为i’+m的体,确定为出队项所在的目标体,将编号为i’+m的体中第j’行,确定为出队项在所在目标体中的目标行;
第四确定单元,用于对于编号为m的出队项,在i’+m大于L-1的情况下,基于指令退出顺序为先行后体,将编号为i’+m-L的体,确定为出队项所在的目标体,将编号为i’+m-L的体中第j’+1行,确定为出队项在所在目标体中的目标行;
其中,m为大于等于0且小于等于M-1的整数。
在本公开的一些实施例中,第一处理模块1604,包括:
译码单元,用于根据各出队项所在的目标项,译码出各出队项的位向量;
选择单元,用于根据各出队项所在的目标体以及对应的位向量,分别从对应的目标体中选出对应的项。
在本公开的一些实施例中,对应的项的信息包括状态位信息;乱序处理器中队列的访问装置1600还包括:
第二获取模块,用于根据各出队项对应的状态位信息,从各出队项中获取符合出队条件的目标出队项;
第二处理模块,用于将目标出队项退出队列,并将目标出队项的有效位置为无效。
在本公开的一些实施例中,出队项包括队头指针Head在所在体中所在的项;第二获取模块,用于:
从队头指针Head在所在体中所在的项开始,按照指定的指令退出顺序,根据各出队项对应的状态位信息,依次确定对应出队项的状态是否符合出队条件;
在各出队项中任意一项出队项的状态不符合出队条件,和/或符合出队条件的出队项的数量达到数量M的情况下,停止执行根据各出队项对应的状态位信息,依次判断对应出队项的状态是否符合出队条件的步骤;
将停止执行根据各出队项对应的状态位信息,依次判断对应出队项的状态是否符合出队条件的步骤之后,已确定的符合出队条件的出队项,确定为目标出队项。
在本公开的一些实施例中,乱序处理器中队列的访问装置1600还包括:
第三获取模块,用于获取当前拍的X条入队指令,其中,X为大于0且小于或等于最大可入队项数P的整数;
第三确定模块,用于从L个体Bank中确定队尾指针Tail所在的体,以及确定队尾指针Tail在所在体中所在的项;
第一判断模块,用于判断队列是否满足预设条件;
第三处理模块,用于在队列满足预设条件的情况下,从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效;
其中,预设条件包括:队列中空项的数量Y大于或等于预设阈值,预设阈值为当前拍的入队指令的数量X,或者为最大可入队项数P。
在本公开的一些实施例中,将X条入队指令写入队列中的空项之后,下一拍对应的队尾指针Tail,指向当前拍最后写入入队指令的空项的下一项;其中,下一项根据指定的指令写入顺序确定。
在本公开的一些实施例中,乱序处理器中队列的访问装置1600还包括:
第四处理模块,用于在队列不满足预设条件的情况下,控制X条入队指令继续等待。
在本公开的一些实施例中,预设阈值为当前拍的入队指令的数量X;乱序处理器中队列的访问装置1600还包括:第五处理模块,用于在队列不满足预设条件的情况下,从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令中的Y条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效,以及控制X条入队指令中除Y条入队指令之外的其它入队指令继续等待。
在本公开的一些实施例中,预设阈值为最大可入队项数P;乱序处理器中队列的访问装置1600还包括:
第二判断模块,用于在队列不满足预设条件的情况下,判断队列中空项的数量Y是否小于入队指令的数量X;
第六处理模块,用于在队列中空项的数量Y小于入队指令的数量X的情况下,则从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令中的Y条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效,以及控制X条入队指令中除Y条入队指令之外的其它入队指令继续等待;
第七处理模块,用于在队列中空项的数量Y不小于入队指令的数量X的情况下,从队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将X条入队指令写入队列中的空项,并将已写入的空项的有效位置为有效。
本公开实施例中提供的乱序处理器中队列的访问装置,获取当前拍的最大可出队项的数量M,其中,M为大于1的整数,从L个体Bank中确定队头指针Head所在的体,以及确定队头指针Head在所在体中所在的项,根据队头指针Head所在的体、在所在体中所在的项、数量M,以及指定的指令退出顺序,确定M个出队项中的各出队项所在的目标体以及在所在目标体中所在的目标项,根据各出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出,可以减少队列中信息读出时的选择逻辑,从而减少延迟和功耗,提高处理器的性能。
为了实现上述实施例,本公开还提出一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开前述实施例提出的乱序处理器中队列的访问方法。
为了实现上述实施例,本公开还提出一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如本公开前述实施例提出的乱序处理器中队列的访问方法。
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令由处理器执行时,执行如本公开前述实施例提出的乱序处理器中队列的访问方法。
图17示出了适于用来实现本公开实施方式的示例性电子设备的框图。图17显示的电子设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图17所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同系统组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图17未显示,通常称为“硬盘驱动器”)。
尽管图17中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图17所示,网络适配器20通过总线18与电子设备12的其他模块通信。应当明白,尽管图17中未示出,可以结合电子设备12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的乱序处理器中队列的访问方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
需要说明的是,在本公开的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (15)
1.一种乱序处理器中队列的访问方法,其特征在于,包括N项的队列分为L个体Bank,且每个所述体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍;所述方法包括:
获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;
从所述L个体Bank中确定队头指针Head所在的体,以及确定所述队头指针Head在所在体中所在的项;
根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项;
根据各所述出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
2.根据权利要求1所述的方法,其特征在于,所述L个体Bank依次编号为0至L-1之间的整数;每个体Bank包括的N/L项分别对应所述Bank的第0行至第N/L-1行;M个所述出队项按照所述指定的指令退出顺序,依次编号为0至M-1之间的整数;
所述根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项,包括:
对于编号为m的出队项,在m为0的情况下,将所述队头指针Head所在的体确定为所述出队项所在的目标体,并将所述队头指针Head在所在体中所在的行,确定为所述出队项在目标体中所在的目标行;
对于编号为m的出队项,在m不为0的情况下,根据编号为m-1的出队项所在的体、在所在体中所在的行,以及所述指定的指令退出顺序,确定编号为m的出队项所在的目标体以及在所在目标体中所在的目标行;
其中,m为大于等于0且小于等于M-1的整数。
3.根据权利要求2所述的方法,其特征在于,所述根据编号为m-1的出队项所在的体、在所在体中所在的行,以及所述指定的指令退出顺序,确定编号为m的出队项所在的目标体以及在所在目标体中所在的目标行,包括:
在所述指令退出顺序为先行后体,编号为m-1的出队项所在体的编号i小于L-1,在所在体中所在行为第j行,j大于等于0且小于等于N/L-1的情况下,将编号为i+1的体,确定为编号为m的出队项所在的目标体,将编号为i+1的体中第j行,确定为编号为m的出队项在所在目标体中的目标行;
在所述指令退出顺序为先行后体,编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j大于等于0且小于N/L-1的情况下,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第j+1行,确定为编号为m的出队项在所在目标体中的目标行;
在编号为m-1的出队项所在体的编号等于L-1,在所在体中所在行为第j行,j等于N/L-1的情况下,基于所述指令退出顺序为先行后体,将编号为0的体,确定为编号为m的出队项所在的目标体,将编号为0的体中第0行,确定为编号为m的出队项在所在目标体中的目标行。
4.根据权利要求1所述的方法,其特征在于,所述L个体Bank依次编号为0至L-1之间的整数;每个体Bank包括的N/L项分别对应所述Bank的第0行至第N/L-1行;所述指令退出顺序为先行后体;M个所述出队项按照所述指定的指令退出顺序,依次编号为0至M-1之间的整数;所述L大于等于所述数量M;所述队头指针Head所在的体的编号为i’,在所在体中所在行为第j’行;
所述根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项,包括:
对于编号为m的出队项,在i’+m小于或等于L-1的情况下,基于所述指令退出顺序为先行后体,将编号为i’+m的体,确定为所述出队项所在的目标体,将编号为i’+m的体中第j’行,确定为所述出队项在所在目标体中的目标行;
对于编号为m的出队项,在i’+m大于L-1的情况下,基于所述指令退出顺序为先行后体,将编号为i’+m-L的体,确定为所述出队项所在的目标体,将编号为i’+m-L的体中第j’+1行,确定为所述出队项在所在目标体中的目标行;
其中,m为大于等于0且小于等于M-1的整数。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据各所述出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,包括:
根据各所述出队项所在的所述目标项,译码出各所述出队项的位向量;
根据各所述出队项所在的所述目标体以及对应的所述位向量,分别从对应的目标体中选出对应的项。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述对应的项的信息包括状态位信息;所述将对应的项的信息读出之后,还包括:
根据各所述出队项对应的所述状态位信息,从各所述出队项中获取符合出队条件的目标出队项;
将所述目标出队项退出所述队列,并将所述目标出队项的有效位置为无效。
7.根据权利要求6所述的方法,其特征在于,所述出队项包括所述队头指针Head在所在体中所在的项;所述根据各所述出队项对应的所述状态位信息,从各所述出队项中获取符合出队条件的目标出队项,包括:
从所述队头指针Head在所在体中所在的项开始,按照所述指定的指令退出顺序,根据各所述出队项对应的所述状态位信息,依次确定对应出队项的状态是否符合所述出队条件;
在各所述出队项中任意一项出队项的状态不符合所述出队条件,和/或符合所述出队条件的出队项的数量达到所述数量M的情况下,停止执行根据各所述出队项对应的所述状态位信息,依次判断对应出队项的状态是否符合所述出队条件的步骤;
将停止执行根据各所述出队项对应的所述状态位信息,依次判断对应出队项的状态是否符合所述出队条件的步骤之后,已确定的符合所述出队条件的出队项,确定为所述目标出队项。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
获取当前拍的X条入队指令,其中,X为大于0且小于或等于最大可入队项数P的整数;
从所述L个体Bank中确定队尾指针Tail所在的体,以及确定所述队尾指针Tail在所在体中所在的项;
判断所述队列是否满足预设条件;
在所述队列满足所述预设条件的情况下,从所述队尾指针Tail在所在体中所在的项开始,根据指定的指令写入顺序,将所述X条入队指令写入所述队列中的空项,并将已写入的空项的有效位置为有效;
其中,所述预设条件包括:所述队列中空项的数量Y大于或等于预设阈值,所述预设阈值为当前拍的所述入队指令的数量X,或者为最大可入队项数P。
9.根据权利要求8所述的方法,其特征在于,所述将所述X条入队指令写入所述队列中的空项之后,下一拍对应的队尾指针Tail,指向所述当前拍最后写入所述入队指令的空项的下一项;其中,所述下一项根据所述指定的指令写入顺序确定。
10.根据权利要求8所述的方法,其特征在于,所述判断所述队列是否满足预设条件之后,还包括:
在所述队列不满足所述预设条件的情况下,控制所述X条入队指令继续等待。
11.根据权利要求8所述的方法,其特征在于,所述预设阈值为当前拍的所述入队指令的数量X;所述判断所述队列是否满足预设条件之后,还包括:
在所述队列不满足所述预设条件的情况下,从所述队尾指针Tail在所在体中所在的项开始,根据所述指定的指令写入顺序,将所述X条入队指令中的Y条所述入队指令写入所述队列中的空项,并将已写入的空项的有效位置为有效,以及控制所述X条入队指令中除所述Y条入队指令之外的其它入队指令继续等待。
12.根据权利要求8所述的方法,其特征在于,所述预设阈值为最大可入队项数P;所述判断所述队列是否满足预设条件之后,还包括:
在所述队列不满足所述预设条件的情况下,判断所述队列中空项的数量Y是否小于所述入队指令的数量X;
若是,则从所述队尾指针Tail在所在体中所在的项开始,根据所述指定的指令写入顺序,将所述X条入队指令中的Y条所述入队指令写入所述队列中的空项,并将已写入的空项的有效位置为有效,以及控制所述X条入队指令中除所述Y条入队指令之外的其它入队指令继续等待;
否则,从所述队尾指针Tail在所在体中所在的项开始,根据所述指定的指令写入顺序,将所述X条入队指令写入所述队列中的空项,并将已写入的空项的有效位置为有效。
13.一种乱序处理器中队列的访问装置,其特征在于,包括N项的队列分为L个体Bank,且每个所述体Bank包括N/L项,其中,L为大于1的整数,N为L的整数倍;所述装置包括:
第一获取模块,用于获取当前拍的最大可出队项的数量M,其中,M为大于1的整数;
第一确定模块,用于从所述L个体Bank中确定队头指针Head所在的体,以及确定所述队头指针Head在所在体中所在的项;
第二确定模块,用于根据所述队头指针Head所在的体、在所在体中所在的项、所述数量M,以及指定的指令退出顺序,确定M个出队项中的各所述出队项所在的目标体,以及在所在目标体中所在的目标项;
第一处理模块,用于根据各所述出队项所在的目标体以及在所在目标体中所在的目标项,分别从对应的目标体中选出对应的项,并将对应的项的信息读出。
14.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210446040.3A CN114546497B (zh) | 2022-04-26 | 2022-04-26 | 乱序处理器中队列的访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210446040.3A CN114546497B (zh) | 2022-04-26 | 2022-04-26 | 乱序处理器中队列的访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114546497A true CN114546497A (zh) | 2022-05-27 |
CN114546497B CN114546497B (zh) | 2022-07-19 |
Family
ID=81666765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210446040.3A Active CN114546497B (zh) | 2022-04-26 | 2022-04-26 | 乱序处理器中队列的访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546497B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904508A (zh) * | 2023-01-06 | 2023-04-04 | 北京微核芯科技有限公司 | 乱序处理器中队列的队列项选择方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5668985A (en) * | 1994-03-01 | 1997-09-16 | Intel Corporation | Decoder having a split queue system for processing intstructions in a first queue separate from their associated data processed in a second queue |
US6463523B1 (en) * | 1999-02-01 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Method and apparatus for delaying the execution of dependent loads |
US20180032344A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Out-of-order block-based processor |
US20190087194A1 (en) * | 2017-09-20 | 2019-03-21 | International Business Machines Corporation | Split store data queue design for an out-of-order processor |
US20190108031A1 (en) * | 2017-10-06 | 2019-04-11 | International Business Machines Corporation | Efficient store-forwarding with partitioned fifo store-reorder queue in out-of-order processor |
CN111966406A (zh) * | 2020-08-06 | 2020-11-20 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
CN112099854A (zh) * | 2020-11-10 | 2020-12-18 | 北京微核芯科技有限公司 | 调度乱序队列和判断队列取消项的方法和装置 |
CN113805944A (zh) * | 2021-11-18 | 2021-12-17 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列多指令的分配执行方法和装置 |
-
2022
- 2022-04-26 CN CN202210446040.3A patent/CN114546497B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5668985A (en) * | 1994-03-01 | 1997-09-16 | Intel Corporation | Decoder having a split queue system for processing intstructions in a first queue separate from their associated data processed in a second queue |
US6463523B1 (en) * | 1999-02-01 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Method and apparatus for delaying the execution of dependent loads |
US20180032344A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Out-of-order block-based processor |
US20190087194A1 (en) * | 2017-09-20 | 2019-03-21 | International Business Machines Corporation | Split store data queue design for an out-of-order processor |
US20190108031A1 (en) * | 2017-10-06 | 2019-04-11 | International Business Machines Corporation | Efficient store-forwarding with partitioned fifo store-reorder queue in out-of-order processor |
CN111966406A (zh) * | 2020-08-06 | 2020-11-20 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
WO2022028048A1 (zh) * | 2020-08-06 | 2022-02-10 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
CN112099854A (zh) * | 2020-11-10 | 2020-12-18 | 北京微核芯科技有限公司 | 调度乱序队列和判断队列取消项的方法和装置 |
CN113805944A (zh) * | 2021-11-18 | 2021-12-17 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列多指令的分配执行方法和装置 |
Non-Patent Citations (2)
Title |
---|
A. CRISTAL: ""Out-of-order commit processors"", 《10TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA"04)》 * |
蒋生健: ""超标量处理器指令乱序退出机制研究"", 《第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904508A (zh) * | 2023-01-06 | 2023-04-04 | 北京微核芯科技有限公司 | 乱序处理器中队列的队列项选择方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114546497B (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6470443B1 (en) | Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information | |
US6122727A (en) | Symmetrical instructions queue for high clock frequency scheduling | |
US6212623B1 (en) | Universal dependency vector/queue entry | |
US6212622B1 (en) | Mechanism for load block on store address generation | |
EP1116103B1 (en) | Mechanism for store-to-load forwarding | |
US7032097B2 (en) | Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache | |
JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
US6289437B1 (en) | Data processing system and method for implementing an efficient out-of-order issue mechanism | |
US6338133B1 (en) | Measured, allocation of speculative branch instructions to processor execution units | |
US9952871B2 (en) | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry | |
CN114546497B (zh) | 乱序处理器中队列的访问方法及装置 | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
US20040216103A1 (en) | Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment | |
US7302553B2 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
US10592517B2 (en) | Ranking items | |
TWI796755B (zh) | 微處理器、適用於微處理器的方法以及資料處理系統 | |
US10430342B2 (en) | Optimizing thread selection at fetch, select, and commit stages of processor core pipeline | |
JP3808013B2 (ja) | 命令実行装置 | |
TW522339B (en) | Method and apparatus for buffering microinstructions between a trace cache and an allocator | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
KR100732426B1 (ko) | 고속 컨텍스트 전환을 갖는 컴퓨터 | |
US11687347B2 (en) | Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard | |
US11907126B2 (en) | Processor with multiple op cache pipelines | |
EP0270873A2 (en) | Single ALU computer system |
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 |