CN112579272A - 微指令分发方法、装置、处理器和电子设备 - Google Patents
微指令分发方法、装置、处理器和电子设备 Download PDFInfo
- Publication number
- CN112579272A CN112579272A CN202011461459.3A CN202011461459A CN112579272A CN 112579272 A CN112579272 A CN 112579272A CN 202011461459 A CN202011461459 A CN 202011461459A CN 112579272 A CN112579272 A CN 112579272A
- Authority
- CN
- China
- Prior art keywords
- microinstruction
- microinstructions
- dependency
- target
- group
- 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 76
- 238000004364 calculation method Methods 0.000 claims abstract description 30
- 230000001419 dependent effect Effects 0.000 claims description 102
- 238000012216 screening Methods 0.000 claims description 39
- 238000004422 calculation algorithm Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 238000000151 deposition Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/3017—Runtime instruction translation, e.g. macros
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
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种微指令分发方法、装置、处理器和电子设备。
背景技术
分发算法是将处于无序队列的微指令分发到调度队列中,以供算术逻辑单元对调度队列中的微指令进行处理。但是目前对微指令的分发,主要是基于调度队列的状态的考虑。
发明内容
本申请的目的在于提供一种微指令分发方法、装置、处理器和电子设备,能够微指令分发效率低的问题。
第一方面,本申请实施例提供一种微指令分发方法,包括:
确定一分发组中的多条微指令之间的依赖关系,所述依赖关系用于表征各条微指令的计算条件与其它微指令的计算结果的关系;
将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,所述预设依赖关系表征所述多条目标微指令中存在至少一条微指令的计算条件包含所述多条目标微指令中的其它微指令中的任一微指令的计算结果。
在一种可选的实施方式中,所述确定一分发组中的多条微指令之间的依赖关系,包括:
将任意一条微指令的目的寄存器与同一分发组中的后续的微指令的源寄存器进行匹配,以确定所述分发组中的各条微指令之间的依赖关系,所述目的寄存器用于存放对应微指令的计算结果,所述源寄存器用于存放对应微指令的计算条件。
在本实施例中,通过对比每条微指令对应的需求与输出,从而可以确定出各条微指令之间的依赖关系,以提高指令的分发准确性。
在一种可选的实施方式中,所述将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,包括:
从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,其中,N为一指定正整数,所述不超过N条微指令为预设依赖关系的多条微指令;
将所述不超过N条微指令存放至同一调度队列。
在本实施例中,基于时钟周期的限制,从而对调度队列中的微指令进行限制,限制选择不超过N条微指令存入一调度队列中,从而可以避免执行逻辑的混乱,以提高微指令分发的可靠性。
在一种可选的实施方式中,所述从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,包括:
当多条存在预设依赖关系的微指令中包括超过N条依次依赖的微指令时,从所述多条存在预设依赖关系的微指令中筛选出排列在前N位的微指令。
在本实施例中,通过仅筛选出排列在前N位的微指令存入调度队列中,从而可以在满足处理器芯片的性能需求的情况下,还能够提高微指令的分发效率。
在一种可选的实施方式中,所述从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,包括:
当多条存在预设依赖关系的微指令中存在至少两条微指令依赖于第一目标微指令时,从所述多条存在预设依赖关系的微指令中筛选出所述第一目标微指令,和从所述至少两条微指令中选择一条微指令,其中,所述至少两条微指令依赖于第一目标微指令表示所述至少两条微指令的计算条件包含所述第一目标微指令的计算结果。
在本实施例中,当多条微指令都依赖于第一目标微指令时,可以将择一微指令与第一目标微指令一起存入一个调度队列中,从而可以提高微指令的分发效率,且不造成额外的性能损失。
在一种可选的实施方式中,所述将所述不超过N条微指令存放至同一调度队列,包括:
根据各个调度队列的令牌数量,筛选出第一目标队列;
将所述不超过N条微指令存放至所述第一目标队列中。
在本实施例中,可以结合对调度队列的当前令牌情况选出第一目标队列,从而可以更好地利用调度队列。
在一种可选的实施方式中,所述将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,包括:
从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,其中,有效依赖微指令组表示所述有效依赖微指令组中的任意一条微指令作为生产者微指令时,仅拥有一条消费者微指令;所述有效依赖微指令组中的任意一条微指令作为消费者微指令时,仅拥有一条生产者微指令,其中,消费者微指令依赖于生产者微指令,即消费者微指令的计算条件包含生产者微指令的计算结果;
将每一组有效依赖微指令组存放至一个调度队列中。
在本实施例中,当前分发组存在多组有依赖关系的微指令时,可以分别分配至多个调度组,从而可以更好地适应不同分发组的需求,提高微指令分发的效率。
在一种可选的实施方式中,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在多个依次依赖的依赖链时,将每个依次依赖的依赖链中的微指令作为一组有效依赖微指令组;
其中,所述依赖链表示多条存在预设依赖关系的微指令形成的微指令链,所述多个依次依赖的依赖链表示依赖链中的第M条微指令仅为第M-1条微指令的消费者微指令,第M条微指令仅为第M+1条微指令生产者微指令,其中,M为大于1的正整数。
在本实施例中,可以基于依赖链的相互之间的独立的依赖关系分别分配至多个调度队列,从而可以更好地适应不同分发组的需求,提高微指令分发的效率。
在一种可选的实施方式中,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在多条微指令依赖于第一微指令,且所述多条微指令中存在第二微指令依赖于第三微指令时,则将所述第二微指令与所述第三微指令作为一组有效依赖微指令组,将从所述多条微指令中除第二微指令以外的微指令中选择一条微指令与第一微指令作为一组有效依赖微指令组。
在一种可选的实施方式中,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在第一组微指令中的微指令均依赖于第二组微指令中的每条微指令时,则从所述第一组微指令中筛选出第二目标微指令,所述第二目标微指令与所述第二组微指令中的任一微指令形成一有效依赖微指令组,以形成多组有效依赖微指令组;其中,所述第二目标微指令为所述第一组微指令中的任一微指令。
在本实施例中,当存在多对一的依赖关系时,可以基于一对一的依赖关系的原则,划分多组有效依赖微指令组,从而可以实现在提高微指令分发效率的情况下,减少性能的损耗。
在一种可选的实施方式中,所述将每一组有效依赖微指令组存放至一个调度队列中,包括:
根据各个调度队列的令牌数量,筛选出多个目标队列,其中,筛选的目标队列的数量与所述有效依赖微指令组的组数相同;
将有效依赖微指令组一对一存放至多个目标队列中。
在一种可选的实施方式中,所述方法还包括:
针对所述分发组中不存在依赖关系的微指令,采用平均分发算法存放至其它调度队列中。
在本实施例中,将有依赖关系的微指令与不存在依赖关系的微指令,采用不同的调度算法,从而可以满足不同的指令调度的需求,以提高微指令分发方法的适应性。
第二方面,本申请实施例提供一种微指令分发装置,包括:
确定模块,用于确定一分发组中的多条微指令之间的依赖关系;
第一存放模块,用于将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中。
第三方面,本申请实施例提供一种处理器,包括:
调度队列,用于存放根据上述的微指令分发方法确定出的存在预设依赖关系的多条微指令;
多个算术逻辑单元,用于执行存储在所述调度队列中的微指令。
第四方面,本申请实施提供一种电子设备,包括:存储器、上述的处理器。
第五方面,本申请实施提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的方法的步骤。
本申请实施例的有益效果是:在分发微指令之前,先确定出各条微指令之间的依赖关系,将存在预设依赖关系的微指令存入同一调度队列,从而可以减少各个调度队列之间的微指令的相互依赖所需的等待时间,以进一步地降低调度队列对微指令输出所需使用的周期,从而可以提高微指令被分发处理的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的方框示意图。
图2为本申请实施例提供的微指令分发方法的流程图。
图3为本申请实施例提供的微指令分发方法的步骤202的详细流程图。
图4a为本申请实施例提供的微指令分发方法的第一微指令依赖关系示意图。
图4b为本申请实施例提供的微指令分发方法的第二微指令依赖关系示意图。
图5为本申请实施例提供的微指令分发方法的第三微指令依赖关系示意图。
图6为本申请实施例提供的微指令分发方法的第四微指令依赖关系示意图。
图7为本申请实施例提供的微指令分发方法的步骤202的另一详细流程图。
图8a为本申请实施例提供的微指令分发方法的第五微指令依赖关系示意图。
图8b为本申请实施例提供的微指令分发方法的第六微指令依赖关系示意图。
图8c为本申请实施例提供的微指令分发方法的第七微指令依赖关系示意图。
图9为本申请实施例提供的微指令分发方法的第八微指令依赖关系示意图。
图10为本申请实施例提供的微指令分发方法的第九微指令依赖关系示意图。
图11为本申请实施例提供的微指令分发方法的流程示意图。
图12a为本申请实施例提供的微指令分发结果示意图。
图12b为本申请实施例提供的微指令另一分发结果示意图。
图13为本申请实施例提供的微指令分发方法的微指令分发结果示意图。
图14为本申请实施例提供的微指令分发装置的模块示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
首先,先对本申请实施例所需使用到的概念进行介绍。
微指令,是一种底层硬件操作,CPU(central processing unit,中文称:中央处理器)前端负责获取体系结构指令中表示的程序代码,并将其解码为一条或多条微指令。
机器指令,是CPU能直接识别并执行的指令,机器指令的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。
其中,计算机的指令有微指令,机器指令和宏指令之分。微指令是微程序级的命令,它属于硬件中的命令。宏指令是由若干条机器指令组成的软件指令,它属于软件中的命令。机器指令则介于微指令与宏指令之间,通常简称为指令,每一条指令可完成一个独立的算术运算或逻辑运算操作。
示例性地,一条机器指令对应一个微程序,该微程序可以由若干条微指令构成的。因此,一条机器指令的功能是若干条微指令组成的微指令组合来实现的。也就是说,一条机器指令所完成的操作被划分成若干条微指令来完成,由微指令进行解释和执行。
每一步机器指令都是一个原子操作,但是硬件为了追求更高的吞吐率(throughoutput),将机器指令又细分成一个个独立的阶段,称之为微指令(micro-operation,μ-op),该微指令可以在一个流水线(pipeline)的不同阶段中顺序执行,当流水线头部空了,就可以执行下一条机器指令的微指令,从而增加了吞吐率。
算术逻辑单元(Arithmetic and Logic Unit,简称:ALU),是能实现多组算术运算和逻辑运算的组合逻辑电路。
算术逻辑运算微指令调度队列(ALU scheduler queue,简称:ALSQ),用于存放微指令。其中,该算术逻辑运算微指令调度队列包括用于计数的令牌。其中,令牌的数量表示算术逻辑运算微指令调度队列当前还可以容纳微指令的数量。示例性地,每存入一条微指令时,则该算术逻辑运算微指令调度队列的令牌数减一;每输出一条微指令时,则该算术逻辑运算微指令调度队列的令牌数加一。
专用微指令,是指需要放在固定类型的算术逻辑运算微指令调度队列的微指令。示例性地,需要存放在能够连接支持对应功能的算术逻辑单元的算术逻辑运算微指令调度队列中的微指令。例如,专用微指令可以包括:乘法微指令、除法微指令、整型转浮点微指令。乘法微指令则需要分发至能够连接上支持乘法运算(Mul)的算术逻辑单元的算术逻辑运算微指令调度队列中。除法微指令则需要分发至能够连接上支持除法运算法(Div)的算术逻辑单元的算术逻辑运算微指令调度队列中。整型转浮点微指令则需要分发至能够连接上支持整型转浮点运算的算术逻辑单元的算术逻辑运算微指令调度队列中。
非专用微指令,是指除专用微指令以外的其它微指令。
实施例一
为便于对本实施例进行理解,首先对执行本申请实施例所公开的微指令分发方法的电子设备进行详细介绍。
如图1所示,是电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
上述的存储器111、存储控制器112、处理器113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可执行模块。
其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路
(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可选地,该处理器113可以包括分发模块,用于执行本申请实施例中提供的微指令分发方法中的步骤。
可选地,该处理器113上还可以设置有调度队列,用于存放微指令。示例性地,该调度队列可以是算术逻辑运算微指令调度队列(ALU scheduler queue,简称:ALSQ)。
可选地,该处理器113上还可以设置有多个算术逻辑单元(Arithmetic and LogicUnit,简称:ALU),用于执行存储在所述调度队列中的微指令。
本实施例中的电子设备100可以用于执行本申请实施例提供的各个方法中的各个步骤。下面通过几个实施例详细描述微指令分发方法的实现过程。
实施例二
请参阅图2,是本申请实施例提供的微指令分发方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤201,确定一分发组中的多条微指令之间的依赖关系。
其中,依赖关系用于表征各条微指令的计算条件与其它微指令的计算结果的关系。
在一种实施方式中,将任意一条微指令的目的寄存器与同一分发组中的后续的微指令的源寄存器进行匹配,以确定所述分发组中的各条微指令之间的依赖关系。
其中,源寄存器中用于存放一微指令所需的资源,也就是用于存放对应微指令的计算条件;目的寄存器用于存放一微指令被处理后的计算结果。
在一个实例中,第一微指令和第二微指令为一个分发中的两条微指令,其中,第一微指令为排在前面的微指令,第二微指令为排在后面的微指令。因此,可以将第一微指令的目的寄存器与第二微指令的源寄存器进行比较,以确定第二微指令是否依赖于第一微指令。示例性地,若第一微指令对应的目的寄存器包括:rax、rbx;第二微指令对应的源寄存器包括:rcx、rax。其中,第二微指令对应的源寄存器rax与第一微指令对应的目的寄存器rax相同,因此,表示第二微指令依赖于第一微指令。也就是第二微指令的执行需要使用到第一微指令的计算结果。
示例性地,由于一条微指令可能对应多个源寄存器,因此,一条微指令可能依赖于多条微指令。
示例性地,由于一条微指令可能对应多个目的寄存器,因此,一条微指令可能被多条微指令依赖。
步骤202,将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中。
示例性地,该预设依赖关系表征所述多条目标微指令中存在至少一条微指令的计算条件包含所述多条目标微指令中的其它微指令中的任一微指令的计算结果。
可选地,上述的预设依赖关系的多条微指令均为非专用微指令。
由于专用微指令需要被分发至指定的调度队列中,以使专用微指令能够被输出至支持对应运算的算术逻辑单元,而非专用微指令可以被分发至任意调度队列中。因此,针对专用微指令则可以直接分发至指定调度队列中。而非专用微指令则可以通过各条微指令之间的依赖关系进行分发。
在一种实施方式中,如图3所示,步骤202可以包括步骤2021和步骤2022。
步骤2021,从多条存在预设依赖关系的微指令中筛选出不超过N条微指令。
示例性地,多条存在预设依赖关系的微指令可根据分发组的多条微指令之间的依赖关系确定。
其中,N为一指定正整数,所述不超过N条微指令为预设依赖关系的多条微指令。
在一个实例中,上述的N的取值可以按照处理芯片的处理能力进行设置。例如,上述的N的取值可以是2、3、4等值。例如,处理器芯片在一个时钟周期能够向调度队列中可以输入3条微指令,则下面以N的取值为3为例进行说明。
示例性地,在两条存在预设依赖关系的微指令中,在先的微指令可以被称为生产者微指令,在后的微指令可以被称为消费者微指令。例如,微指令B的执行依赖于微指令A的计算结果,也就是微指令B的执行条件中包含了微指令A的计算结果,那么微指令A可以称为微指令B的生产者微指令,微指令B可以被称为微指令A的消费者微指令。
示例性地,由于一条微指令可能对应多个源寄存器,因此,一条消费者微指令可能对应多条生产者微指令。
示例性地,由于一条微指令可能对应多个目的寄存器,因此,一条生产者微指令可能对应多条消费者微指令。
在一种实施方式中,步骤2021可以被实施为:当多条存在预设依赖关系的微指令中包括超过N条依次依赖的微指令时,从所述多条存在预设依赖关系的微指令中筛选出排列在前N位的微指令。
如图4a所示,图示中示出了四条微指令,微指令1依赖于微指令0,微指令2依赖于微指令1,微指令3依赖于微指令2,形成了依次依赖的依赖链。图4a所示的依赖链的长度大于设定的3。因此,需要从中选出3条微指令作为一组有效依赖微指令组存入同一个调度队列中。因此,需要从图4a所示的依赖链选出分发组中排在前3位的3条微指令。图4a所示的“×”表示不考虑微指令3依赖微指令2的依赖关系。
因此,在图4a所示的实例中,微指令0、微指令1、微指令2作为预设依赖关系的多条微指令。
本实施例中,针对图4a所示的实例中的微指令3,则可以采用平均分发算法进行分发至对应的调度队列中。
如图4b所示,图示中示出了五条微指令,微指令1依赖于微指令0,微指令2依赖于微指令1,微指令3依赖于微指令2,微指令4依赖于微指令3,形成了依次依赖的依赖链。图4b所示的依赖链的长度大于设定的3。因此,需要从中选出3条微指令作为一组有效依赖微指令组存入同一个调度队列中。因此,需要从图4b所示的依赖链选出分发组中排在前3位的3条微指令。图4b所示的“×”表示不考虑微指令3依赖微指令2的依赖关系。
因此,在图4b所示的实例中,微指令0、微指令1、微指令2作为预设依赖关系的多条微指令。
可选地,针对图4b所示的实例中的微指令3和微指令4可以作为一组预设依赖关系的多条微指令存入另一个调度队列中。
可选地,针对图4b所示的实例中的微指令3和微指令4,也可以采用平均分发算法进行分发至对应的调度队列中。
在另一种实施方式中,步骤2021可以被实施为:当多条存在预设依赖关系的微指令中存在至少两条微指令依赖于第一目标微指令时,从所述多条存在预设依赖关系的微指令中筛选出所述第一目标微指令,和从所述至少两条微指令中选择一条微指令。
如图5所示,还是以分发组中有四条微指令为例,微指令1与微指令0不存在依赖关系。微指令1与微指令2也不存在依赖关系。微指令1与微指令3也不存在依赖关系。微指令2依赖于微指令0,微指令3也依赖于微指令0。
在图5所示的实例中,以微指令0为生产者微指令,微指令2和微指令3均为微指令0生产者微指令对应的消费者微指令。
为例避免不存在依赖关系的微指令被放在同一调度队列中造成性能的损耗,在图5所示的实例中,可以从多条消费者微指令选择一条消费者指令作为微指令0的有效消费者微指令。
示例性地,就微指令0对应的两条消费者微指令(微指令2和微指令3)可选择在先的微指令2。因此,在图5所示的实例中,可以将生产者微指令0和消费者微指令2作为预设依赖关系的多条微指令。
在图5所示的实例中,在进行微指令分发时,则可以不考虑微指令3与微指令0之间的依赖关系。
本实施例中,针对图5所示的实例中的微指令1和微指令3,则可以采用平均分发算法进行分发至对应的调度队列中。
如图6所示,图6所示的实例中,微指令1依赖于微指令0,微指令2依赖于微指令0,微指令3不依赖于任何微指令。图6所示的依赖关系中生产者微指令和消费者微指令都是一对一的依赖关系,形成了依次依赖的依赖链,且该依赖链的长度不大于3。因此,可以将存在依次依赖关系的微指令0、微指令1、微指令2存放至同一调度队列中。
本实施例中,针对图6所示的实例中的微指令3,则可以采用平均分发算法进行分发至对应的调度队列中。
步骤2022,将所述不超过N条微指令存放至同一调度队列。
可选地,可以根据各个调度队列的令牌数量,筛选出第一目标队列;然后,将所述不超过N条微指令存放至所述第一目标队列中。
可选地,该第一目标队列可以是当前拥有令牌数量最多的调度队列。
通过上述步骤2021和步骤2022,可以实现将一个分发组中的存在一个有效的依赖链时,实现微指令的分发。针对一个分发组存在多个有效依赖链时,则可以采用步骤2023和步骤2024提供的方式进行处理。
在一种实施方式中,如图7所示,步骤202也可以包括步骤2023和步骤2024。
步骤2023,从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组。
本实施例中,上述有效依赖微指令组表示该有效依赖微指令组中的任意一条微指令作为生产者微指令时,仅拥有一条消费者微指令;该有效依赖微指令组中的任意一条微指令作为消费者微指令时,仅拥有一条生产者微指令。与之对应,若一依赖微指令组种任一微指令作为生产者微指令时,拥有两条或两条以上消费者微指令时,则可以作为无效依赖微指令组。可选地,可以删掉其它该生产者微指令的部分消费者微指令,仅预留一条消费者微指令,以构建一组有效依赖微指令组。可选地,在构建有效依赖微指令组可以预留执行顺序在所有消费者微指令中首位的消费者指令。
示例性地,若一依赖微指令组种任一微指令作为消费者微指令时,拥有两条或两条以上生产者微指令时,则可以作为无效依赖微指令组。可选地,可以删掉其它该消费者微指令的部分生产者微指令,仅预留一条生产者微指令,以构建一组有效依赖微指令组。可选地,在构建有效依赖微指令组可以预留执行顺序在所有生产者微指令中首位的生产者指令。
在一种实施方式中,步骤2023可以被实施为:当多条存在预设依赖关系的微指令中存在多个依次依赖的依赖链时,将每个依次依赖的依赖链中的微指令作为一组有效依赖微指令组。
其中,所述依赖链表示多个存在依赖关系的微指令形成的微指令链,多个依次依赖的依赖链表示依赖链中的第M条微指令仅为第M-1条微指令的消费者微指令,第M条微指令仅为第M+1条微指令生产者微指令,其中,M为大于1的正整数。
如图8a、8b、8c所示,分别示出了三组存在多个依次依赖的依赖链示意图。
在图8a所示的实例中包括四条微指令,微指令1依赖于微指令0,微指令3依赖于微指令2。在此实例中包括了两条依次依赖的依赖链:微指令0和微指令1形成的依赖链,微指令2和微指令3形成的依赖链。因此,微指令0和微指令1形成的依赖链可以作为一组有效依赖微指令组。微指令2和微指令3形成的依赖链可以作为一组有效依赖微指令组。
在图8b所示的实例中包括五条微指令,微指令1依赖于微指令0,微指令2依赖于微指令1,微指令4依赖于微指令3。在此实例中包括了两条依次依赖的依赖链:微指令0、微指令1和微指令2形成的依赖链,微指令3和微指令4形成的依赖链。因此,微指令0、微指令1和微指令2形成的依赖链可以作为一组有效依赖微指令组。微指令3和微指令4形成的依赖链可以作为一组有效依赖微指令组。
在图8c所示的实例中包括六条微指令,微指令1依赖于微指令0,微指令2依赖于微指令1,微指令4依赖于微指令3,微指令5依赖于微指令4。在此实例中包括了两条依次依赖的依赖链:微指令0、微指令1和微指令2形成的依赖链,微指令3、微指令4和微指令5形成的依赖链。因此,微指令0、微指令1和微指令2形成的依赖链可以作为一组有效依赖微指令组。微指令3、微指令4和微指令5形成的依赖链可以作为一组有效依赖微指令组。
在另一种实施方式中,步骤2023可以被实施为:当多条存在预设依赖关系的微指令中存在多条微指令依赖于第一微指令,且所述多条微指令中存在第二微指令依赖于第三微指令时,则将所述第二微指令与所述第三微指令作为一组有效依赖微指令组,将从所述多条微指令中除第二微指令以外的微指令中选择一条微指令与第一微指令作为一组有效依赖微指令组。
示例性地,依赖于第一微指令的微指令可以是两条,三条等。
以依赖于第一微指令的微指令数量为两条为例。当多条存在预设依赖关系的微指令中存在第三微指令和第四微指令依赖于第一微指令,且第三微指令依赖于第二微指令时,将所述第四微指令和第一微指令作为一组有效依赖微指令组,将第三微指令和第二微指令作为一组有效依赖微指令组。
下面结合图9所示的实例进行说明,如图9所示,图9所示的实例中的分发组包括四条微指令,其中,微指令2和微指令3依赖于微指令0,且微指令2还依赖于微指令1。由于微指令0作为生产者微指令,拥有两条消费者微指令,因此,以微指令0为生产者微指令,从其消费者微指令中选择一条消费者微指令。由于微指令2存在另外的依赖关系,则可以放弃微指令2依赖于微指令0的依赖关系,将微指令3与微指令0作为一组有效依赖微指令组。则保留微指令2与微指令1之间的依赖关系,形成一组有效依赖微指令组。
在图9所示的实例中,在微指令分发过程中,则不考虑微指令2与微指令0之间的依赖关系。
在另一种实施方式中,步骤2023可以被实施为:当多条存在预设依赖关系的微指令中存在第一组微指令中的微指令均依赖于第二组微指令中的每条微指令时,则从所述第一组微指令中筛选出第二目标微指令,所述第二目标微指令与所述第二组微指令中的任一微指令形成一有效依赖微指令组,以形成多组有效依赖微指令组。
其中,所述第二目标微指令为所述第一组微指令中的任一微指令。
如图10所示,图10所示的实例中包括四条微指令,其中,第一组微指令包括微指令2和微指令3,第二组微指令包括微指令0和微指令1。
其中,第一组微指令包括微指令2和微指令3均依赖于第二组微指令中的微指令0,第一组微指令包括微指令2和微指令3均依赖于第二组微指令中的微指令1。
在第一组微指令中选微指令2与第二组微指令中的微指令0形成一有效依赖微指令组,在第一组微指令中选微指令3与第二组微指令中的微指令1形成一有效依赖微指令组。
在图10所示的实例中,在进行微指令分发时,则不考虑微指令3与微指令0之间的依赖关系,也不考虑微指令2与微指令1之间的依赖关系。
步骤2024,将每一组有效依赖微指令组存放至一个调度队列中。
可选地,可以根据各个调度队列的令牌数量,筛选出多个目标队列;然后,将有效依赖微指令组一对一存放至多个目标队列中。
其中,筛选的目标队列的数量与所述有效依赖微指令组的组数相同。
在本实施实例中,在调度组中还可能存在一些没有依赖关系的微指令,针对没有依赖关系的微指令,如图11所示,本申请实施例提供的微指令分发方法还包括:步骤203,针对所述分发组中不存在依赖关系的微指令,采用平均分发算法存放至其它调度队列中。
示例性地,上述的平均分发算法可以是根据各个调度队列中的各个调度队列拥有的令牌数据进行分发。
示例性地,令牌对量越大的调度队列可以分发更多的微指令,令牌数量越少的调度队列则可以分发更少的微指令。
在一个实例中,使用一个测试数据对全部使用平均分发算法对微指令进行分发和处理,以及使用根据微指令之间的依赖关系进行分发和处理的耗时数据,如下表所示:
分发算法 | 平均分发算法 | 依赖关系分发算法 |
运行时间 | 250ns | 175ns |
由于上述的数据可以看出,考虑微指令之间的依赖关系,可以降低对微指令进行分发和处理所需的耗时。
不同处理芯片在一个时钟周期能够输入的微指令数量,与一个时钟周期能够输出的微指令数量不同。下面以一个时钟周期能够输出三条微指令为例描述本申请实施例中的微指令分发方法与完全采用平均分发算法相比的耗时。
在一个实例中,如图12a所示,当一个分发组包括九条微指令时,如果九条微指令均不存在依赖关系时,九条微指令随机分发至三个调度队列中,则可以通过三个周期则能够完全输出该分发组中的所有的微指令。
在一个实例中,如图12b所示,当一个分发组包括九条微指令时,如果九条微指令均存在依赖关系时,微指令1b依赖于微指令1a,微指令1c依赖于微指令1b,微指令2b依赖于微指令2a,微指令2c依赖于微指令2b,微指令3b依赖于微指令3a,微指令3c依赖于微指令3b。如果采用平均分发算法,则微指令1a、微指令2a、微指令3a被分发至调度队列alsq0,则微指令1b、微指令2b、微指令3b被分发至调度队列alsq1,则微指令1c、微指令2c、微指令3c被分发至调度队列alsq2。
由于微指令1b依赖于微指令1a,且微指令1c依赖于微指令1b,因此,在第一个输出周期中,则微指令1b和微指令1c不能够与微指令1a一起输出;在第二个输出周期中,由于微指令1c依赖于微指令1b,则微指令1c不能随着微指令1b和微指令2a一起输出。因此,以此类推,第三个输出周期能够输出微指令3a、微指令1c、微指令2b;第四个输出周期能够输出微指令3b、微指令2c;第四个输出周期能够输出微指令3c。因此,输出图12b所示的实例中的全部微指令则需要五个周期。
在一个实例中,如图13所示,当一个分发组包括九条微指令时,如果九条微指令均存在依赖关系时,微指令1b依赖于微指令1a,微指令1c依赖于微指令1b,微指令2b依赖于微指令2a,微指令2c依赖于微指令2b,微指令3b依赖于微指令3a,微指令3c依赖于微指令3b。如果采用本申请实施例提供的微指令分发方法,则微指令1a、微指令1b、微指令1c被分发至调度队列alsq0,则微指令2a、微指令2b、微指令2c被分发至调度队列alsq1,则微指令3a、微指令3b、微指令3c被分发至调度队列alsq2。
因此,在第一个输出周期中,则输出微指令1a、微指令2a和微指令3a;在第二个输出周期中,输出微指令1b、微指令2b和微指令3b;第三个输出周期能够输出微指令1c、微指令2c、微指令3c。因此,输出图13所示的实例中的全部微指令仅需要三个周期。
通过上述的实例,可以确定采用本实施例中的微指令分发方法能够降低输出微指令所需的时钟周期。
本申请实施例的微指令分发方法:在分发微指令之前,先确定出各条微指令之间的依赖关系,将存在预设依赖关系的微指令存入同一调度队列,从而可以减少调度队列对微指令输出所需使用的周期,从而可以提高微指令被处理的效率。
实施例三
基于同一申请构思,本申请实施例中还提供了与微指令分发方法对应的微指令分发装置,由于本申请实施例中的装置解决问题的原理与前述的微指令分发方法实施例相似,因此本实施例中的装置的实施可以参见上述方法的实施例中的描述,重复之处不再赘述。
请参阅图14,是本申请实施例提供的微指令分发装置的功能模块示意图。本实施例中的微指令分发装置中的各个模块用于执行上述方法实施例中的各个步骤。微指令分发装置包括:确定模块301和第一存放模块302;其中,
确定模块301,用于确定一分发组中的多条微指令之间的依赖关系;
第一存放模块302,用于将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中。
一种可能的实施方式中,所述确定一分发组中的多条微指令之间的依赖关系,包括:
将任意一条微指令的目的寄存器与同一分发组中的后续的微指令的源寄存器进行匹配,以确定所述分发组中的各条微指令之间的依赖关系。
一种可能的实施方式中,第一存放模块302,包括:第一筛选单元、第一存放单元。
第一筛选单元,用于从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,其中,N为一指定正整数,所述不超过N条微指令为预设依赖关系的多条微指令;
第一存放单元,用于将所述不超过N条微指令存放至同一调度队列。
一种可能的实施方式中,第一筛选单元,用于:
当多条存在预设依赖关系的微指令中包括超过N条依次依赖的微指令时,从所述多条存在预设依赖关系的微指令中筛选出排列在前N位的微指令。
一种可能的实施方式中,第一筛选单元,用于:
当多条存在预设依赖关系的微指令中存在至少两条微指令依赖于第一目标微指令时,从所述多条存在预设依赖关系的微指令中筛选出所述第一目标微指令,和从所述至少两条微指令中选择一条微指令。
一种可能的实施方式中,第一存放单元,用于:
根据各个调度队列的令牌数量,筛选出第一目标队列;
将所述不超过N条微指令存放至所述第一目标队列中。
一种可能的实施方式中,存放模块,包括:第二筛选单元和第二存放单元。
第二筛选单元,用于从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,其中,有效依赖微指令组表示所述有效依赖微指令组中的任意一条微指令作为生产者微指令时,仅拥有一条消费者微指令;所述有效依赖微指令组中的任意一条微指令作为消费者微指令时,仅拥有一条生产者微指令,其中,消费者微指令依赖于生产者微指令,即消费者微指令的计算条件包含生产者微指令的计算结果;
第二存放单元,用于将每一组有效依赖微指令组存放至一个调度队列中。
一种可能的实施方式中,第二筛选单元,用于:
当多条存在预设依赖关系的微指令中存在多个依次依赖的依赖链时,将每个依次依赖的依赖链中的微指令作为一组有效依赖微指令组;
其中,所述依赖链表示多个存在依赖关系的微指令形成的微指令链,所述多个依次依赖的依赖链表示依赖链中的第M条微指令仅为第M-1条微指令的消费者微指令,第M条微指令仅为第M+1条微指令生产者微指令,其中,M为大于1的正整数。
一种可能的实施方式中,第二筛选单元,用于:
当多条存在预设依赖关系的微指令中存在多条微指令依赖于第一微指令,且所述多条微指令中存在第二微指令依赖于第三微指令时,则将所述第二微指令与所述第三微指令作为一组有效依赖微指令组,将从所述多条微指令中除第二微指令以外的微指令中选择一条微指令与第一微指令作为一组有效依赖微指令组。
一种可能的实施方式中,第二筛选单元,用于:
当多条存在预设依赖关系的微指令中存在第一组微指令中的微指令均依赖于第二组微指令中的每条微指令时,则从所述第一组微指令中筛选出第二目标微指令,所述第二目标微指令与所述第二组微指令中的任一微指令形成一有效依赖微指令组,以形成多组有效依赖微指令组;其中,所述第二目标微指令为所述第一组微指令中的任一微指令。
一种可能的实施方式中,第二存放单元,用于:
根据各个调度队列的令牌数量,筛选出多个目标队列,其中,筛选的目标队列的数量与所述有效依赖微指令组的组数相同;
将有效依赖微指令组一对一存放至多个目标队列中。
一种可能的实施方式中,本实施例中的微指令分发装置还可以包括:
第二存放模块,用于针对所述分发组中不存在依赖关系的微指令,采用平均分发算法存放至其它调度队列中。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的微指令分发方法的步骤。
本申请实施例所提供的微指令分发方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的微指令分发方法的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种微指令分发方法,其特征在于,包括:
确定一分发组中的多条微指令之间的依赖关系,所述依赖关系用于表征各条微指令的计算条件与其它微指令的计算结果的关系;
将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,所述预设依赖关系表征所述多条目标微指令中存在至少一条微指令的计算条件包含所述多条目标微指令中的其它微指令中的任一微指令的计算结果。
2.根据权利要求1所述的方法,其特征在于,所述确定一分发组中的多条微指令之间的依赖关系,包括:
将任意一条微指令的目的寄存器与同一分发组中的后续的微指令的源寄存器进行匹配,以确定所述分发组中的各条微指令之间的依赖关系,所述目的寄存器用于存放对应微指令的计算结果,所述源寄存器用于存放对应微指令的计算条件。
3.根据权利要求1所述的方法,其特征在于,所述将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,包括:
从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,其中,N为一指定正整数,所述不超过N条微指令为预设依赖关系的多条微指令;
将所述不超过N条微指令存放至同一调度队列。
4.根据权利要求3所述的方法,其特征在于,所述从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,包括:
当多条存在预设依赖关系的微指令中包括超过N条依次依赖的微指令时,从所述多条存在预设依赖关系的微指令中筛选出排列在前N位的微指令。
5.根据权利要求3所述的方法,其特征在于,所述从多条存在预设依赖关系的微指令中筛选出不超过N条微指令,包括:
当多条存在预设依赖关系的微指令中存在至少两条微指令依赖于第一目标微指令时,从所述多条存在预设依赖关系的微指令中筛选出所述第一目标微指令,和从所述至少两条微指令中选择一条微指令,其中,所述至少两条微指令依赖于第一目标微指令表示所述至少两条微指令的计算条件包含所述第一目标微指令的计算结果。
6.根据权利要求4或5所述的方法,其特征在于,所述将所述不超过N条微指令存放至同一调度队列,包括:
根据各个调度队列的令牌数量,筛选出第一目标队列;
将所述不超过N条微指令存放至所述第一目标队列中。
7.根据权利要求1所述的方法,其特征在于,所述将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中,包括:
从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,其中,有效依赖微指令组中的任意一条微指令作为生产者微指令时,仅拥有一条消费者微指令;所述有效依赖微指令组中的任意一条微指令作为消费者微指令时,仅拥有一条生产者微指令,其中,消费者微指令的计算条件包含生产者微指令的计算结果;
将每一组有效依赖微指令组存放至一个调度队列中。
8.根据权利要求7所述的方法,其特征在于,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在多个依次依赖的依赖链时,将每个依次依赖的依赖链中的微指令作为一组有效依赖微指令组;
其中,所述依赖链表示多条存在预设依赖关系的微指令形成的微指令链,所述多个依次依赖的依赖链表示依赖链中的第M条微指令仅为第M-1条微指令的消费者微指令,第M条微指令仅为第M+1条微指令生产者微指令,其中,M为大于1的正整数。
9.根据权利要求7所述的方法,其特征在于,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在多条微指令依赖于第一微指令,且所述多条微指令中存在第二微指令依赖于第三微指令时,将所述第二微指令与所述第三微指令作为一组有效依赖微指令组,将从所述多条微指令中除第二微指令以外的微指令中选择一条微指令与第一微指令作为一组有效依赖微指令组。
10.根据权利要求7所述的方法,其特征在于,所述从多条存在预设依赖关系的微指令中筛选出至少一组有效依赖微指令组,包括:
当多条存在预设依赖关系的微指令中存在第一组微指令中的微指令均依赖于第二组微指令中的每条微指令时,则从所述第一组微指令中筛选出第二目标微指令,所述第二目标微指令与所述第二组微指令中的任一微指令形成一有效依赖微指令组,以形成多组有效依赖微指令组;其中,所述第二目标微指令为所述第一组微指令中的任一微指令。
11.根据权利要求7-10任意一项所述的方法,其特征在于,所述将每一组有效依赖微指令组存放至一个调度队列中,包括:
根据各个调度队列的令牌数量,筛选出多个目标队列,其中,筛选的目标队列的数量与所述有效依赖微指令组的组数相同;
将有效依赖微指令组一对一存放至多个目标队列中。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述分发组中不存在依赖关系的微指令,采用平均分发算法存放至其它调度队列中。
13.一种微指令分发装置,其特征在于,包括:
确定模块,用于确定一分发组中的多条微指令之间的依赖关系;
第一存放模块,用于将基于所述依赖关系确定的存在预设依赖关系的多条目标微指令存放至同一调度队列中。
14.一种处理器,其特征在于,包括:
分发模块,用于执行权利要求1-12任意一项所述的微指令分发方法中的步骤;
调度队列,用于存放根据权利要求1-12任意一项所述的微指令分发方法确定出的存在预设依赖关系的多条微指令;
多个算术逻辑单元,用于执行存储在所述调度队列中的微指令。
15.一种电子设备,其特征在于,包括:存储器和权利要求14所述的处理器。
16.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至12任意一项所述的微指令分发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011461459.3A CN112579272B (zh) | 2020-12-07 | 2020-12-07 | 微指令分发方法、装置、处理器和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011461459.3A CN112579272B (zh) | 2020-12-07 | 2020-12-07 | 微指令分发方法、装置、处理器和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579272A true CN112579272A (zh) | 2021-03-30 |
CN112579272B CN112579272B (zh) | 2023-11-14 |
Family
ID=75131611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011461459.3A Active CN112579272B (zh) | 2020-12-07 | 2020-12-07 | 微指令分发方法、装置、处理器和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579272B (zh) |
Citations (6)
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 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
US20140344554A1 (en) * | 2011-11-22 | 2014-11-20 | Soft Machines, Inc. | Microprocessor accelerated code optimizer and dependency reordering method |
CN104424026A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种指令调度方法及装置 |
US20160378503A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor |
US20200310815A1 (en) * | 2019-03-26 | 2020-10-01 | Intel Corporation | System, Apparatus And Method For Program Order Queue (POQ) To Manage Data Dependencies In Processor Having Multiple Instruction Queues |
-
2020
- 2020-12-07 CN CN202011461459.3A patent/CN112579272B/zh active Active
Patent Citations (6)
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 |
US20140344554A1 (en) * | 2011-11-22 | 2014-11-20 | Soft Machines, Inc. | Microprocessor accelerated code optimizer and dependency reordering method |
CN104424026A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种指令调度方法及装置 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
US20160378503A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor |
US20200310815A1 (en) * | 2019-03-26 | 2020-10-01 | Intel Corporation | System, Apparatus And Method For Program Order Queue (POQ) To Manage Data Dependencies In Processor Having Multiple Instruction Queues |
Non-Patent Citations (1)
Title |
---|
张盛兵, 高德远, 樊晓桠: "基于微指令覆盖的最小指令集测试算法", 计算机学报, no. 10 * |
Also Published As
Publication number | Publication date |
---|---|
CN112579272B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713043B2 (en) | Opcode counting for performance measurement | |
KR102074961B1 (ko) | 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치 | |
JP6605573B2 (ja) | 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ | |
US20080263323A1 (en) | Reconfigurable Computing Architectures: Dynamic and Steering Vector Methods | |
TWI733798B (zh) | 在執行向量操作時管理位址衝突的設備及方法 | |
US20150212972A1 (en) | Data processing apparatus and method for performing scan operations | |
US20150262062A1 (en) | Decision tree threshold coding | |
WO2015118299A1 (en) | A data processing apparatus and method for performing segmented operations | |
US20120072704A1 (en) | "or" bit matrix multiply vector instruction | |
Raveendran et al. | A RISC-V instruction set processor-micro-architecture design and analysis | |
JP6659724B2 (ja) | 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法 | |
CN114746840A (zh) | 用于乘法和累加操作的处理器单元 | |
Huang et al. | Modular design of fully pipelined reduction circuits on FPGAs | |
US20080288756A1 (en) | "or" bit matrix multiply vector instruction | |
CN113296788B (zh) | 指令调度方法、装置、设备及存储介质 | |
CN109032665B (zh) | 微处理器中指令输出处理方法及装置 | |
CN112579272B (zh) | 微指令分发方法、装置、处理器和电子设备 | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
US10592517B2 (en) | Ranking items | |
CN114064123A (zh) | 指令处理方法、装置、设备及存储介质 | |
US20110231634A1 (en) | System and method for grouping alternative possibilities in an unknown instruction path | |
Liang et al. | Parallel computation of standard competition rankings over a sorted array | |
US8560586B2 (en) | Linear bit counting implementations | |
US7620796B2 (en) | System and method for acceleration of streams of dependent instructions within a microprocessor | |
Agrawal et al. | An efficient parallel implementation of CPU scheduling algorithms using data parallel algorithms |
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 |