CN114610395A - 指令分派方法、装置、电子设备及计算机可存储介质 - Google Patents
指令分派方法、装置、电子设备及计算机可存储介质 Download PDFInfo
- Publication number
- CN114610395A CN114610395A CN202210249786.5A CN202210249786A CN114610395A CN 114610395 A CN114610395 A CN 114610395A CN 202210249786 A CN202210249786 A CN 202210249786A CN 114610395 A CN114610395 A CN 114610395A
- Authority
- CN
- China
- Prior art keywords
- queue
- instruction
- dispatched
- queues
- dispatching
- 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 52
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 230000015654 memory Effects 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 239000002699 waste material Substances 0.000 description 6
- 230000002411 adverse Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
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
本申请提供了一种指令分派方法、装置、电子设备及计算机可读存储介质;方法包括:确定执行待分派指令的功能单元;确定所述功能单元所关联的至少两个队列集合;将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;其中,所述至少两个队列集合所对应的功能单元的数量不同。通过本申请,能够提高发射队列的利用率。
Description
技术领域
本申请涉及计算机结构技术,尤其涉及一种指令分派方法、装置、电子设备及计算机可读存储介质。
背景技术
乱序发射队列是高性能处理器的一个重要组件,是乱序指令窗口的一部分,乱序发射队列的深度对处理器的性能、频率和功耗有重要的影响;因此,如何提高发射队列的利用率是处理器技术一直追求的目标。
发明内容
本申请实施例提供一种指令分派方法、装置、电子设备及计算机可读存储介质,能够提高发射队列的利用率。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种指令分派方法,包括:
确定执行待分派指令的功能单元;
确定所述功能单元所关联的至少两个队列集合;
将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;
其中,所述两个队列集合所对应的功能单元的数量不同。
在一些可选实施例中,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
确定所述至少两个队列集合包括的第一队列集合和第二队列集合分别关联的功能单元的数量;
根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令。
在一些可选实施例中,所述根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令,包括:
响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中有空闲队列,将所述待分派指令分派至所述第一队列集合中的空闲队列。
在一些可选实施例中,将所述待分派指令分派至所述第一队列集合中的空闲队列,包括:
所述空闲队列的数量为至少两个,确定至少两个所述空闲队列中空闲率最高的空闲队列;
将所述待分派指令分派至所述空闲率最高的空闲队列。
在一些可选实施例中,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中没有空闲队列、所述第二队列集合中有空闲队列,将所述待分派指令分派至所述第二队列集合中的空闲队列。
在一些可选实施例中,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
所述功能单元所关联的至少两个队列集合包括第三队列集合,响应于所述第三队列集合关联的功能单元的数量大于所述第二队列集合关联的功能单元的数量、且所述第一队列集合和所述第二队列集合中均没有空闲队列、所述第三队列集合中有空闲队列,将所述待分派指令分派至所述第三队列集合中的空闲队列。
在一些可选实施例中,所述确定执行待分派指令的功能单元,包括:
确定执行所述待分派指令的计算类型;
基于所述计算类型,确定执行所述待分派指令的功能单元。
第二方面,本申请实施例提供一种指令分派装置,所述指令分派装置包括:
第一确定单元,用于确定执行待分派指令的功能单元;
第二确定单元,用于确定所述功能单元所关联的至少两个队列集合;
分派单元,用于将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;
其中,所述两个队列集合所对应的功能单元的数量不同。
在一些可选实施例中,所述分派单元,用于确定所述至少两个队列集合包括的第一队列集合和第二队列集合分别关联的功能单元的数量;
根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令。
在一些可选实施例中,所述分派单元,用于响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中有空闲队列,将所述待分派指令分派至所述第一队列集合中的空闲队列。
在一些可选实施例中,所述空闲队列的数量为至少两个,所述分派单元,用于确定至少两个所述空闲队列中空闲率最高的空闲队列;
将所述待分派指令分派至所述空闲率最高的空闲队列。
在一些可选实施例中,所述分派单元,用于响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中没有空闲队列、所述第二队列集合中有空闲队列,将所述待分派指令分派至所述第二队列集合中的空闲队列。
在一些可选实施例中,所述功能单元所关联的至少两个队列集合包括第三队列集合,所述分派单元,用于响应于所述第三队列集合关联的功能单元的数量大于所述第二队列集合关联的功能单元的数量、且所述第一队列集合和所述第二队列集合中均没有空闲队列、所述第三队列集合中有空闲队列,将所述待分派指令分派至所述第三队列集合中的空闲队列。
在一些可选实施例中,所述第一确定单元,用于确定执行所述待分派指令的计算类型;
基于所述计算类型,确定执行所述待分派指令的功能单元。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:
处理器、存储器和总线;
所述存储器存储可执行指令;
所述处理器与所述存储器之间通过所述总线通信,所述处理器执行所述存储器中存储的可执行指令时,实现上述的指令分派方法。
第四方面,本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的指令分派方法。
第五方面,本申请实施例提供一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
本申请实施例提供的指令分派方法包括:确定执行待分派指令的功能单元;确定所述功能单元所关联的至少两个队列集合;将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;其中,所述两个队列集合所对应的功能单元的数量不同。通过为每个执行指令的功能单元关联至少两个队列集合,且至少两个队列集合所对应的功能单元的数量不同,使得每个队列集合能够被分派的指令的类型的数量不同,提高了指令分派的灵活性,进而提高了队列的利用率。
附图说明
图1是相关技术中的指令处理流程示意图;
图2是本申请实施例提供的将指令分派至队列的一种处理流程示意图;
图3是本申请实施例提供的将指令分派至队列的另一种处理流程示意图;
图4是本申请实施例提供的将指令分派至队列的又一种处理流程示意图;
图5是本申请实施例提供的指令分派方法的一种可选处理流程示意图;
图6是本申请实施例提供的队列集合与功能单元的关联关系的一种可选示意图;
图7是本申请实施例提供的队列集合与功能单元的关联关系的另一种可选示意图;
图8是本申请实施例提供的队列集合与功能单元的关联关系的又一种可选示意图;
图9是本申请实施例提供的队列集合与功能单元的关联关系的还有一种可选示意图;
图10是本申请实施例提供的队列集合与功能单元的关联关系详细示意图;
图11是本申请实施例提供的分派待分派指令的详细过程示意图;
图12是本申请实施例提供的指令分派装置的组成结构示意图;
图13是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
应理解,在本申请的各种实施例中,各实施过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)流水线:是一种将多条指令重叠执行的实现技术,流水线中的每个步骤完成指令的一部分,每一步骤称为流水级或流水段,流水级前后相连,形成流水线;指令在流水线的一端进入,通过这些流水级在流水线的另一端退出。
2)指令:一条指令以二进制编码的形式存放在存储器中,一条指令包括操作码和操作数,操作码决定要完成的操作,操作数包括参加运算的数据及其所在的单元地址。
3)功能单元:用于执行指令,可以包括主整数单元、浮点与整数乘法器、浮点加法器、浮点和整型除法器;其中,主整数单元用于处理载入和存储、整型算术逻辑部件运算器(Arithmetic Logical Unit,ALU)操作和分支;浮点加法器处理浮点加、减和转换。
相关技术中,指令的处理流程示意图,如图1所示,在一条流水线中一条指令的生命周期包括:取指、译码、执行、访存和写回。其中,指令取指是指将指令从存储器中读取出来的过程。指令译码是指存储器中取出来的指令进行翻译的过程,经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组(Register File)中将操作数读出。指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行(Instruction Execute)。指令执行是指对指令进行真正运算的过程。例如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则对操作数进行减法操作。在“执行”阶段的最常见部件为ALU,作为实施具体运算的硬件功能单元。访存是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程。写回是指将指令执行的结果写回通用寄存器组的过程,如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
基于图1所示的指令处理流程,指令经过译码、进入执行阶段之前,需要先将指令分派至不同的功能单元对应的队列中,再将指令从功能单元对应的队列中发射到功能单元,以使功能单元执行指令。
将指令分派至队列的一种处理流程示意图,如图2所示,处理器包括一个集中式发射队列,所有类型的指令均分派至该集中式发射队列中;再根据指令的类型发射至不同的功能单元。由于集中式发射队列的每一项都可以包括任意类型的指令,因此在队列项的字段设置上需要保证能够保存操作数及控制信息需求最多的指令,导致在保存较简单指令时,会有一部分字段空闲的情况,存在资源浪费的问题。
将指令分派至队列的另一种处理流程示意图,如图3所示,处理器包括多个分布式发射队列,每个分布式发射队列仅可以保存一种类型的指令,每个分布式发射队列只能向一个功能单元发射指令。由于每个分布式发射队列仅保存一种类型的指令,因此队列项的字段设置只需保证能保存一种类型指令的操作数及控制信息需求即可,使得分布式发射队列的面积较小、深度较浅、时序较好;但是,由于指令类型的分布存在较强的动态性,经常出现某个分布式发射队列已满,而其它发射队列还有空闲的情况;而指令分派是顺序的,只要一个分布式发射队列已满,指令分派就会暂停,这将导致其它有空闲项的分布式发射队列得不到指令分派,出现资源浪费的问题。
将指令分派至队列的又一种处理流程示意图,如图4所示,处理器包括多个分布式发射队列,每个分布式发射队列可以保存多种不同类型的指令,每个分布式发射队列可以向多个功能单元发射指令。该方案虽然解决了图3所示的指令分派至队列的处理流程中由于有空闲项的分布式发射队列得不到指令分派,而出现资源浪费的问题,但是增加了队列项内字段的浪费,增加了队列深度,进而导致队列的时序性较差。
其中,乱序发射队列的队列项的结构示意图,如下表1所示,乱序发射队列的队列项包括:指令的全局标识(Globally Unique Identifier,GID)、指令控制信息、源操作数控制信息和目的寄存器。其中,GID用于在整个处理器核中标识一条指令;指令控制信息包括操作类型、指令延迟和功能单元流水线等;源操作数控制信息包括寄存器号、就绪标志和产生该数据的功能单元等;目的寄存器用于记录指令的目的寄存器号。
表1.乱序发射队列的队列项的结构示意图
GID | 指令控制信息 | 源操作数O控制信息 | … | 源操作数N控制信息 | 目的寄存器 | … | 目的寄存器 |
乱序发射队列的深度对处理器的性能有重要的影响,乱序发射队列越深,从乱序发射队列中选择一条就绪的指令发射所需的时间就越长,因此,乱序队列的深度对处理器的运行频率有不利影响。另外,乱序发射队列的每个队列项都需要将每个源操作数的寄存器号和结果总线上广播的寄存器号做比较,以更新源操作数就绪标志,比较操作所消耗的能量是处理器功耗的一个重要组成部分。因此,乱序发射队列的深度对处理器的功耗有很大的不利影响。
基于乱序发射队列对处理器性能的影响,以及上述几种方法存在的资源浪费和时序性差等问题,本申请实施例提供了一种指令分派方法、装置、电子设备以及计算机可读存储介质,能够提高队列的利用率,有效避免指令发射阻塞,在保证处理器性能的基础上,减少发射队列的深度,提高队列的时序性,缓解发射队列对处理器运行频率和功耗的不利影响。
本申请实施例提供的指令分派方法的一种可选处理流程,如图5所示,至少包括以下步骤:
步骤S101,确定执行待分派指令的功能单元。
在一些实施例中,待执行指令经过译码之后,能够获知对待执行指令需要执行的计算类型(也可以称为待执行指令类型),进而能够根据计算类型确定待分派指令对应的功能单元。
作为示例,待执行指令类型可以包括:存储器引用、寄存器-寄存器ALU指令、寄存器-立即数ALU指令和分支;其中,存储器引用对应的操作可以包括:ALU将操作数相加,得到实际地址,并将得到的实际地址存放在寄存器ALU output中。寄存器-寄存器ALU指令对应的操作可以包括:ALU对寄存器A和寄存器B中的取值执行由功能代码指定的操作,将操作结果存放在临时寄存器ALU output中。寄存器-立即数ALU指令对应的操作可以包括:ALU对寄存器A和寄存器Imm中的值执行由操作代码指定的操作,将操作结果存放在临时寄存器ALUoutput中。分支对应的操作可以包括:ALU将将寄存器Imm中的符号扩展立即数左移2位,得到一个字偏移量,以计算分支目标的地址;检查已经在上一周期读取的寄存器A,以确认该分支是否被选中。
在一些实施例中,执行待分派指令的功能单元的数量可以是一个,也可以是多个;其中,多个功能单元是指两个或两个以上的功能单元。
步骤S102,确定所述功能单元所关联的至少两个队列集合。
在一些实施例中,每个功能单元可以关联两个队列集合或者两个以上的队列集合,每个队列集合中可以包括一个或多个队列;队列可以是用于存放指令的指令乱序发射队列,指令乱序发射队列中的指令被发射至对应的功能单元,由功能单元执行指令。
在一些实施例中,两个队列集合所对应功能单元的数量不同;作为示例,队列集合与功能单元的关联关系的一种可选示意图,如图6所示:功能单元1关联队列集合1和队列集合2,队列集合1仅关联功能单元1,队列集合2则关联功能单元1和功能单元2。其中,队列集合所对应(或关联)的功能单元用于执行队列集合中的指令。
队列集合与功能单元的关联关系的另一种可选示意图,如图7所示:功能单元1关联队列集合1和队列集合2,队列集合1关联功能单元1和功能单元2,队列集合2则关联功能单元1、功能单元2…功能单元N-1、功能单元N。
队列集合与功能单元的关联关系的又一种可选示意图,如图8所示:功能单元1关联队列集合1和队列集合2,队列集合1仅关联功能单元1,队列集合2则关联功能单元1、功能单元2…功能单元N-1、功能单元N。
上述图6至图8以一个功能单元关联两个队列集合为例进行说明,在实际应用中,一个功能单元还可以关联两个以上队列集合;以一个功能单元关联三个队列集合为例,队列集合与功能单元的关联关系的还有一种可选示意图,如图9所示:功能单元1关联队列集合1、队列集合2和队列集合3,队列集合1仅关联功能单元1,队列集合2关联功能单元1和功能单元2,队列集合3则关联功能单元1、功能单元2…功能单元N-1、功能单元N。
基于上述图6至图9所示,每个功能单元可以关联多个队列集合,每个功能单元所关联的多个队列集合分别对应的功能单元数量均不相同。
在实际应用时,每个功能单元关联的队列集合的数量可以相同,也可以不同;作为示例,功能单元1关联一个队列集合,功能单元2关联两个队列集合,功能单元3关联三个队列集合,功能单元4关联四个队列集合。作为另一个示例,每个功能单元可以均关联两个队列集合,或者每个功能单元可以均关联三个队列集合。
步骤S103,将所述待分派指令分派至所述至少两个队列集合中的一个队列集合。
在一些实施例中,将所述待分派指令分派至所述至少两个队列集合中的一个队列集合的具体实现过程可以包括:确定所述至少两个队列集合包括的第一队列集合和第二队列集合分别关联的功能单元的数量;根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令。
在具体实施时,可以将待分派指令优先分派至关联的功能单元的数量少的队列集合中。举例来说,若第一队列集合关联的功能单元的数量少于第二队列集合关联的功能单元的数量、且所述第一队列集合中有空闲队列,则优先将待分派指令分派至第一队列集合中的空闲队列。若第一队列集合中有多个空闲队列,则可以将待分派指令随机分派至一个空闲队列;也可以比较各空闲队列的空闲率,将待分派指令优先分派至空闲率最高的空闲队列,或者将分派指令优先分派至空闲率最低的空闲队列。
在具体实施时,若第一队列集合中没有空闲队列,即第一队列集合中的所有队列均已满,则将待分派指令分派至第二队列集合中的空闲队列;同理,若第二队列集合中有多个空闲队列,则可以将待分派指令随机分派至一个空闲队列;也可以比较各空闲队列的空闲率,将待分派指令优先分派至空闲率最高的空闲队列,或者将分派指令优先分派至空闲率最低的空闲队列。
在具体实施时,若功能单元对应的队列集合还包括第三队列集合,且第三队列集合对应的功能单元的数量大于第二队列集合对应的功能单元的数量,第一队列集合和第二队列集合中均没有空闲队列,则将待分派指令分派至第三队列集合中的空闲队列。同理,若第三队列集合中有多个空闲队列,则可以将待分派指令随机分派至一个空闲队列;也可以比较各空闲队列的空闲率,将待分派指令优先分派至空闲率最高的空闲队列,或者将分派指令优先分派至空闲率最低的空闲队列。
在具体实施时,若功能单元对应的全部队列集合均没有空闲队列,则停止分派所述待分派指令。
现有方案中,由于不同程序分派到每个功能单元的指令比例不同,同一个程序分派到每个功能单元的指令比例也会随运行阶段不同而发生上下波动,所以不同队列的利用率会持续出现不均衡。因此,会出现有些队列比较有多项空闲、而另外一些队列却已经满了的情况。在现有处理器的顺序分派前提下,一旦有一个队列满,分派将会整个停止,从而部分队列中的空闲项得不到充分利用,造成资源浪费。集中式的队列可以规避此问题,但对电路时序有非常不利的影响。本申请实施例中,通过为每个执行指令的功能单元关联至少两个队列集合,且至少两个队列集合所对应的功能单元的数量不同,使得每个队列集合能够被分派的指令的类型的数量不同,兼顾了集中式队列和分布式队列组织方式的优点,提高了指令分派的灵活性,进而提高了队列的利用率,有效避免指令发射阻塞,在保证处理器性能的基础上,减少发射队列的深度,提高队列的时序性,缓解发射队列对处理器运行频率和功耗的不利影响。
需要说明的是,自第一台通用电子计算机问世以来,计算机技术在几十年间取得了飞速的发展,计算机技术的飞速发展得益于计算机体系结构的改进以及计算机生产技术的发展。计算机生产技术对计算机技术的发展的贡献一直是稳定的;然而,由于计算机体系结构经历几十年的改进,使得计算机体系结构的改进空间愈发狭小,因此针对计算机体系结构的任意小的改进都将对处理器的性能和计算机技术的发展带来较明显的影响。
下面结合图10所示的队列集合与功能单元的关联关系详细示意图,对本申请实施例提供的指令分派方法的一种可选详细处理流程进行说明。
指令经取值、分支预测、译码和重命名之后,进入指令分派流程;如图10所示,功能单元1关联私有队列1、分布共享式发射队列2和集中式发射队列3,功能单元2关联私有队列2、分布共享式发射队列2和集中式发射队列3;功能单元N关联私有队列N和集中式发射队列3。待分派指令对应的功能单元包括功能单元1和功能单元N。针对功能单元1,分派待分派指令的详细过程示意图,如图11所示,至少包括以下步骤:
步骤S201,针对功能单元1,比较私有队列1、分布共享式发射队列2和集中式发射队列3所对应的功能单元的数量,根据比较结果确定指令分派的优先级。
在一些实施例中,私有队列1仅对应一个功能单元,即功能单元1;分布共享式发射队列1对应两个功能单元,分别是功能单元1和功能单元2;集中式发射队列对应N个功能单元,分别是功能单元1、功能单元2…功能单元N。可以确定,私有队列1对应的功能单元的数量最少,集中式发射队列3对应的功能单元的数量最多,分布共享式发射队列3对应的功能单元的数量居中。因此,指令分派的优先级由高到低的顺序分别是:私有队列1、分布共享式发射队列2和集中式发射队列3;其中,指令分派的优先级可以指分派指令时选择发射队列的顺序,优先向优先级高的发射队列中分派指令;在优先级高的发射队列已满的情况下,依次向优先级低的发射队列中分派指令。
步骤S202,判断私有队列1中的指令是否已满;若为是,执行步骤S203;若为否,将待分派指令分派至私有队列1。
步骤S203,判断分布共享式发射队列2中的指令是否已满;若为是,执行步骤S204;若为否,将待分派指令分派至分布共享式发射队列2。
步骤S204,判断集中式发射队列3中的指令是否已满;若为是,停止分派所述待分派指令;若为否,将待分派指令分派至集中式发射队列3。
针对功能单元N,首先确定私有队列N中的指令是否已满,若为否,则将待分派指令分派至私有队列N;若为是,进一步判断集中式发射队列3中的指令是否已满,若为是,停止分派所述待分派指令;若为否,将待分派指令分派至集中式发射队列3。
上述对待分派指令的分派流程进行了说明,在具体实施时,将待分派指令分派至相应的发射队列后,需将待分派指令发射至对应的功能单元,以使功能单元执行该待分派指令。在具体实施时,可以按照指令进入队列的时间顺序优先将先进入发射队列的指令发射至功能单元,也可以根据实际的应用情况采用其他发射指令的策略。本申请对指令发射的过程不做具体限定。
本申请实施例提供的指令分派装置可以采用软件方式实现,图12示出了存储在存储器中的指令分派装置,包括了多个模块,模块可以是程序和插件等形式的软件,包括以下软件模块:第一确定单元301、第二确定单元302和分派单元303,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
第一确定单元301,用于确定执行待分派指令的功能单元;
第二确定单元302,用于确定所述功能单元所关联的至少两个队列集合;
分派单元303,用于将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;
其中,所述两个队列集合所对应的功能单元的数量不同。
在一些可选实施例中,所述分派单元303,用于确定所述至少两个队列集合包括的第一队列集合和第二队列集合分别关联的功能单元的数量;
根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令。
在一些可选实施例中,所述分派单元303,用于响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中有空闲队列,将所述待分派指令分派至所述第一队列集合中的空闲队列。
在一些可选实施例中,所述空闲队列的数量为至少两个,所述分派单元303,用于确定至少两个所述空闲队列中空闲率最高的空闲队列;
将所述待分派指令分派至所述空闲率最高的空闲队列。
在一些可选实施例中,所述分派单元303,用于响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中没有空闲队列、所述第二队列集合中有空闲队列,将所述待分派指令分派至所述第二队列集合中的空闲队列。
在一些可选实施例中,所述功能单元所关联的至少两个队列集合包括第三队列集合,所述分派单元,用于响应于所述第三队列集合关联的功能单元的数量大于所述第二队列集合关联的功能单元的数量、且所述第一队列集合和所述第二队列集合中均没有空闲队列、所述第三队列集合中有空闲队列,将所述待分派指令分派至所述第三队列集合中的空闲队列。
在一些可选实施例中,所述第一确定单元301,用于确定执行所述待分派指令的计算类型;
基于所述计算类型,确定执行所述待分派指令的功能单元。
需要说明的是,本申请实施例中指令分派装置的描述,与上述指令分派方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的指令分派装置中未尽的技术细节,可以根据图5至图11任一附图的说明而理解。
下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为电子设备,所述电子设备可以是服务器或终端设备。
服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
参见图13,图13是本申请实施例提供的电子设备400的结构示意图,图12所示的电子设备400包括:至少一个处理器410、存储器450和总线440;电子设备400中的各个组件通过总线440耦合在一起。可理解,总线440用于实现这些组件之间的连接通信。总线440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图13中将各种总线都标为总线440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器450中存储有用于实现本申请实施例提供的指令分派方法的可执行指令,指令分派方法可由图12所示的指令分派装置中的第一确定单元301、第二确定单元302和分派单元303实现;存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集。
在一些实施例中,电子设备400还可以包括:
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的指令分派方法,例如,如图5至图11示出的指令分派方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请所述的指令分派方法。
以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (11)
1.一种指令分派方法,其特征在于,所述方法包括:
确定执行待分派指令的功能单元;
确定所述功能单元所关联的至少两个队列集合;
将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;
其中,所述至少两个队列集合所对应的功能单元的数量不同。
2.根据权利要求1所述的方法,其特征在于,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
确定所述至少两个队列集合包括的第一队列集合和第二队列集合分别关联的功能单元的数量;
根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一队列集合和所述第二队列集合分别关联的功能单元的数量,分派所述待分派指令,包括:
响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中有空闲队列,将所述待分派指令分派至所述第一队列集合中的空闲队列。
4.根据权利要求3所述的方法,其特征在于,所述将所述待分派指令分派至所述第一队列集合中的空闲队列,包括:
所述空闲队列的数量为至少两个,确定至少两个所述空闲队列中空闲率最高的空闲队列;
将所述待分派指令分派至所述空闲率最高的空闲队列。
5.根据权利要求3所述的方法,其特征在于,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
响应于所述第一队列集合关联的功能单元的数量小于所述第二队列集合关联的功能单元的数量、且所述第一队列集合中没有空闲队列、所述第二队列集合中有空闲队列,将所述待分派指令分派至所述第二队列集合中的空闲队列。
6.根据权利要求5所述的方法,其特征在于,所述将所述待分派指令分派至所述至少两个队列集合中的一个队列集合,包括:
所述功能单元所关联的至少两个队列集合包括第三队列集合,响应于所述第三队列集合关联的功能单元的数量大于所述第二队列集合关联的功能单元的数量、且所述第一队列集合和所述第二队列集合中均没有空闲队列、所述第三队列集合中有空闲队列,将所述待分派指令分派至所述第三队列集合中的空闲队列。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述确定执行待分派指令的功能单元,包括:
确定执行所述待分派指令的计算类型;
基于所述计算类型,确定执行所述待分派指令的功能单元。
8.一种指令分派装置,其特征在于,所述指令分派装置包括:
第一确定单元,用于确定执行待分派指令的功能单元;
第二确定单元,用于确定所述功能单元所关联的至少两个队列集合;
分派单元,用于将所述待分派指令分派至所述至少两个队列集合中的一个队列集合;
其中,所述两个队列集合所对应的功能单元的数量不同。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器、存储器和总线;
所述存储器存储可执行指令;
所述处理器与所述存储器之间通过所述总线通信,所述处理器执行所述存储器中存储的可执行指令时,实现权利要求1至7任一项所述的指令分派方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至7任一项所述的指令分派方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249786.5A CN114610395A (zh) | 2022-03-11 | 2022-03-11 | 指令分派方法、装置、电子设备及计算机可存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249786.5A CN114610395A (zh) | 2022-03-11 | 2022-03-11 | 指令分派方法、装置、电子设备及计算机可存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114610395A true CN114610395A (zh) | 2022-06-10 |
Family
ID=81863025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210249786.5A Pending CN114610395A (zh) | 2022-03-11 | 2022-03-11 | 指令分派方法、装置、电子设备及计算机可存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114610395A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117858262A (zh) * | 2024-03-07 | 2024-04-09 | 成都爱瑞无线科技有限公司 | 基站资源调度优化方法、装置、基站、设备、介质及产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US6338133B1 (en) * | 1999-03-12 | 2002-01-08 | International Business Machines Corporation | Measured, allocation of speculative branch instructions to processor execution units |
CN104699466A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
US9304775B1 (en) * | 2007-11-05 | 2016-04-05 | Nvidia Corporation | Dispatching of instructions for execution by heterogeneous processing engines |
CN109062604A (zh) * | 2018-06-26 | 2018-12-21 | 天津飞腾信息技术有限公司 | 一种面向标量和向量指令混合执行的发射方法及装置 |
CN109388429A (zh) * | 2018-09-29 | 2019-02-26 | 古进 | Mhp异构多流水线处理器的任务分发方法 |
US20190163486A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Issue queue with dynamic shifting between ports |
CN109951400A (zh) * | 2019-03-12 | 2019-06-28 | Oppo广东移动通信有限公司 | 终端的指令发送方法、装置、电子设备及可读存储介质 |
-
2022
- 2022-03-11 CN CN202210249786.5A patent/CN114610395A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US6338133B1 (en) * | 1999-03-12 | 2002-01-08 | International Business Machines Corporation | Measured, allocation of speculative branch instructions to processor execution units |
US9304775B1 (en) * | 2007-11-05 | 2016-04-05 | Nvidia Corporation | Dispatching of instructions for execution by heterogeneous processing engines |
CN104699466A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
US20190163486A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Issue queue with dynamic shifting between ports |
CN109062604A (zh) * | 2018-06-26 | 2018-12-21 | 天津飞腾信息技术有限公司 | 一种面向标量和向量指令混合执行的发射方法及装置 |
CN109388429A (zh) * | 2018-09-29 | 2019-02-26 | 古进 | Mhp异构多流水线处理器的任务分发方法 |
CN109951400A (zh) * | 2019-03-12 | 2019-06-28 | Oppo广东移动通信有限公司 | 终端的指令发送方法、装置、电子设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
陈书明;李振涛;万江华;胡定磊;郭阳;汪东;扈啸;孙书为;: ""银河飞腾"高性能数字信号处理器研究进展", 计算机研究与发展, 28 June 2006 (2006-06-28), pages 993 - 1000 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117858262A (zh) * | 2024-03-07 | 2024-04-09 | 成都爱瑞无线科技有限公司 | 基站资源调度优化方法、装置、基站、设备、介质及产品 |
CN117858262B (zh) * | 2024-03-07 | 2024-05-14 | 成都爱瑞无线科技有限公司 | 基站资源调度优化方法、装置、基站、设备、介质及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552163B2 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
US10235180B2 (en) | Scheduler implementing dependency matrix having restricted entries | |
US9639369B2 (en) | Split register file for operands of different sizes | |
KR102471606B1 (ko) | 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷 | |
US7464253B2 (en) | Tracking multiple dependent instructions with instruction queue pointer mapping table linked to a multiple wakeup table by a pointer | |
US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
EP4152146A1 (en) | Data processing method and device, and storage medium | |
CN112214241A (zh) | 一种分布式指令执行单元的方法及系统 | |
EP4336352A1 (en) | Instruction execution method, processor and electronic apparatus | |
CN114610395A (zh) | 指令分派方法、装置、电子设备及计算机可存储介质 | |
US20220027162A1 (en) | Retire queue compression | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
EP4152150A1 (en) | Processor, processing method, and related device | |
US20170177355A1 (en) | Instruction and Logic for Permute Sequence | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
CN114610494A (zh) | 资源分配方法、电子设备及计算机可读存储介质 | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
US11210091B2 (en) | Method and apparatus for processing data splicing instruction | |
US11144322B2 (en) | Code and data sharing among multiple independent processors | |
US8898433B2 (en) | Efficient extraction of execution sets from fetch sets | |
WO2024087039A1 (zh) | 一种块指令的处理方法和块指令处理器 | |
CN113703841B (zh) | 一种寄存器数据读取的优化方法、装置及介质 | |
CN114625537A (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 |