CN114780149A - 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 - Google Patents
用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 Download PDFInfo
- Publication number
- CN114780149A CN114780149A CN202210361643.3A CN202210361643A CN114780149A CN 114780149 A CN114780149 A CN 114780149A CN 202210361643 A CN202210361643 A CN 202210361643A CN 114780149 A CN114780149 A CN 114780149A
- Authority
- CN
- China
- Prior art keywords
- micro
- dependency
- operations
- register
- tag
- 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 38
- 239000011159 matrix material Substances 0.000 claims abstract description 110
- 238000001514 detection method Methods 0.000 claims abstract description 18
- 230000005540 biological transmission Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008713 feedback mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/22—Microcontrol or microprogram arrangements
-
- 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/30098—Register arrangements
-
- 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
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Abstract
本发明公开了一种用于乱序超标量处理器的操作依赖性调度方法、部件及处理器,本发明包括采用依赖性矩阵记录微操作之间的依赖信息,根据即将写回结果的微操作信息更新依赖性矩阵,选择就绪的微操作发射到各条执行流水线;在各条执行流水线中,将微操作的源作数的寄存器号、执行流水线返回的目的操作数的寄存器号进行比较以选择从旁路或寄存器中获取源操作数,若某微操作被取消则一并取消依赖它的微操作。本发明仅需要较少的比较逻辑,能实现微操作的依赖性检测、快速唤醒、源操作数来源的确定以及具有依赖性的微操作快速取消,有效地解决了因发射队列项数和执行通路增加带来的依赖性检测、跟踪与处置复杂度大幅提升的难题。
Description
技术领域
本发明属于微处理器设计技术,具体涉及一种用于乱序超标量处理器的操作依赖性调度方法、部件及处理器。
背景技术
随着芯片工艺的升级,芯片可容纳的晶体管数量迅速增长,高性能处理器的微体系结构优化技术也同时朝着并行性更高、执行效率更高的方向快速发展。对于具备乱序超标量技术的高性能处理器而言,使用工艺升级带来的更多逻辑来增加CPU前后端的端口宽度成为了必然的趋势,例如处理器的发射端口从四发射升级为八发射,发射队列的项数和结果总线数量也因此迅速增加。但是,随之而来的影响是:各结果总线向发射队列各发射项的旁路逻辑开销激增,微操作之间依赖性的解决和依赖性跟踪用于源操作数的匹配等与旁路密切相关的发射队列设计模块也逐渐面临复杂度提升、时序紧张的难题。总而言之,发射队列的相关设计已经成为限制高性能通用处理器性能的关键因素。
在微处理器前后端逐渐变宽的趋势下,发射队列深度增加和数据执行通路增加,进而导致发射队列各发射项中待发射微操作的依赖性检测以及检测后跟踪与处置的问题变得棘手。微操作的源操作数可能来源于旁路,因此为了唤醒具有数据依赖性的微操作需要大量确认发射队列中的微操作是否已经满足发射要求,即需要先检测队列中微操作与执行通路中微操作是否存在依赖关系,若存在依赖关系之后从时序周期上判断后续发射阶段是否可以通过旁路正确地获得所依赖的数据。对此,一般的做法是通过旁路寄存器标签(tag,寄存器号)比较来检测队列中微操作与执行通路中微操作的依赖性关系。随后根据检测出来的依赖关系判断队列中该微操作何时可以被发射。同时检测出来的依赖关系也用于后续微操作确定源操作数来源以及快速连续取消已发射的微操作,因此需要持续跟踪该依赖关系,并根据依赖信息处置操作数来源和微操作取消的问题。然而tag比较需要每一条执行通路结果总线的目的操作数寄存器tag与发射队列中微操作的每个源寄存器tag进行比较,在结果总线数量和发射队列项数二者均迅速增加的情况下,比较逻辑复杂度使得面积与时序无法接受。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于乱序超标量处理器的操作依赖性调度方法、部件及处理器,本发明仅需要较少的比较逻辑,能实现微操作的依赖性检测、快速唤醒、源操作数来源的确定以及具有依赖性的微操作快速取消,有效地解决了因发射队列项数和执行通路增加带来的依赖性检测、跟踪与处置复杂度大幅提升的难题。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于乱序超标量处理器的操作依赖性调度方法,包括:
1)对译码后的新微操作进行重命名,获取微操作之间的依赖信息,派遣到发射队列;
2)采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵,并选择就绪的微操作分别发射到各条执行流水线;
3)在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较,若匹配则直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数,且若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;否则,从寄存器堆中获取源操作数;
4)若被发射的微操作未被取消,则在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号。
可选地,步骤1)中获取微操作之间的依赖信息是通过用于记录未写回结果的微操作的目的存储器号的生产者表来实现的,所述获取微操作之间的依赖信息包括:将译码后的新微操作的源操作数的寄存器号、生产者表中记录各条未写回结果的微操作的目的存储器号进行映射匹配,则两者相匹配判定译码后的新微操作对于所匹配的未写回结果的微操作具有依赖关系。
可选地,所述生产者表中的每一行表示一条微操作,且每一行包括两列,第一列为微操作序号,第二列为微操作的目的存储器号的标签值。
可选地,步骤2)中采用依赖性矩阵记录微操作之间的依赖信息包括:在依赖性矩阵中为译码后的新微操作生成一项记录,该项记录对应所有未写回结果的微操作均包含一个对应的标志位,该标志位取值为1,表示译码后的新微操作依赖于该标志位对应的未写回结果的微操作,该标志位取值为0,表示译码后的新微操作不依赖于该标志位对应的未写回结果的微操作。
可选地,步骤2)中根据执行流水线返回的写回结果的微操作信息更新依赖性矩阵包括:在每一个时钟周期接收各条执行流水线返回写回结果的微操作对应的入口编号entry_num,将各条执行流水线返回写回结果的所有微操作对应的入口编号entry_num译码形成清除向量,并将该清除向量对应的依赖性矩阵中每一个入口编号entry_num对应的微操作释放,并将所有依赖于被释放微操作的其他微操作的对应标志位置为0;步骤4)中返回即将写回结果的微操作信息是指将同一条执行流水线中所有流水站返回的即将写回结果的微操作信息生成一个选择向量Px_Entry_num,所述选择向量Px_Entry_num与执行流水线、依赖性矩阵三者均一一对应,所述选择向量Px_Entry_num中某一位的值为1表示依赖性矩阵中对应的微操作即将写回结果。
可选地,步骤2)中选择满足发射条件的微操作进行发射包括:在每一个时钟周期将依赖性矩阵中每一项记录的所有标志位进行或非操作,若或非操作的结果为1,则判定该项记录对应的微操作的源操作数全部就绪、满足发射条件,否则判定该项记录对应的微操作的源操作数尚未全部就绪、不满足发射条件;将同一个依赖性矩阵的所有或非操作的结果拼接形成就绪向量,以用于根据就绪向量在各个依赖性矩阵记载的所有源操作数全部就绪、满足发射条件的微操作中,选择其中n条最老的微操作进行发射使得每一条流水线被发射一条微操作,其中n为执行流水线的条数。
可选地,步骤3)包括:将执行流水线返回即将写回结果的目的操作数的寄存器号dly0_tag送入各条执行流水线的第一级流水站i1,同时将所述寄存器号dly0_tag还通过依次连续寄存多个节拍周期形成多个中间寄存器号dlyi_tag;在各条执行流水线中,从第一级流水站i1开始,将每一级流水站中的微操作的每一个源操作数的寄存器号均与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag进行比较,若与寄存器号dly0_tag或各个中间寄存器号dlyi_tag中任意一者匹配,则确定微操作的源操作数来源为从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数、并获取源操作数的时序信息为寄存器号dly0_tag或各个中间寄存器号dlyi_tag对应的时序,若将寄存器号dly0_tag作为的目的操作数寄存器的微操作被取消,则流水站将所发射的微操作也取消;若与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag均布匹配,则从寄存器堆中获取源操作数。
本发明还提供一种一种用于前述操作依赖性调度方法的操作依赖性调度部件,包括:
重命名模块,用于对译码后的新微操作进行重命名;
依赖检测模块,用于获取微操作之间的依赖信息;
派遣模块,用于将完成依赖信息检测的微操作派遣到发射队列;
依赖矩阵模块,用于采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵;
选择逻辑,用于基于依赖矩阵模块选择就绪的微操作分别发射到各条执行流水线;
标签比较器,用于在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较;
源操作数获取模块,用于在标签比较器比较得到的结果为匹配时,直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数;否则从寄存器堆中获取源操作数;
微操作取消模块,用于在标签比较器比较得到的结果为匹配时,若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;
执行模块,用于在被发射的微操作未被取消时在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号;
所述依赖矩阵模块与微处理器中的执行流水线一一对应,且依赖矩阵模块包括:
入口寄存项,用于记录依赖矩阵模块对应的发射队列中的任意一项的入口编号;
有效标志位,用于表示依赖矩阵模块对应发射队列中的任意一项微操作的有效状态;
依赖性矩阵,用于记录所有未写回微操作之间的依赖性信息,所述依赖性矩阵中的任意第i行第j列的标志位表示发射队列中第i项微操作的源操作数依赖于第j项微操作的目的操作数的状态,状态为1表示有依赖关系,状态为0表示无依赖关系;
或非逻辑,用于将依赖性矩阵每一行的所有位进行或非运算,并将或非运算结果形成该行的微操作对应的就绪向量以用于选择就绪的微操作分别发射到对应的执行流水线,若该就绪向量为1的位则表示该位所对应的微操作的源操作数全部就绪、满足发射条件;
译码器,用于根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵。
此外,本发明还提供一种乱序超标量处理器,包括译码器和与译码器相连的后端调度模块,所述后端调度模块被编程或配置以执行所述用于乱序超标量处理器的操作依赖性调度方法的步骤,或者所述后端调度模块为所述的操作依赖性调度部件。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施所述用于乱序超标量处理器的操作依赖性调度方法的步骤。
和现有技术相比,本发明主要具有下述优点:
本发明使用了一种依赖性矩阵和寄存器号(标签tag)比较联用的发射队列调度机制,使之拥有两种机制的多种优势。
1、从比较器数量的角度,仅使用寄存器号比较的方式,执行流水线反馈的寄存器号信息需反馈至每一个entry中,比较器数量需求较大,而本发明中,执行流水线反馈的寄存器号信息仅需反馈至每个流水线的i1段进行寄存器号比较,比较器数量大幅减少。
2、从唤醒时间的角度,仅使用寄存器号比较的唤醒需要执行流水线反馈的寄存器号经过比较器比较后才能唤醒后续微操作。而本发明的唤醒采用依赖性矩阵的唤醒机制,仅需反馈回依赖性矩阵的清除信息刷新依赖性矩阵,唤醒速度得到提升。
3、从源操作来源确定角度,仅使用依赖性矩阵的方式,无法做到快速获取操作数来源信息,而本发明采用ISSUE段的寄存器号比较机制,比较结果可直接确定操作数来源,更加快捷方便。
4、从微操作连续取消的角度,仅使用依赖性矩阵的方式,无法做到快速的连续取消有相关性的微操作。而本发明采用发射段的寄存器号比较机制,比较结果可直接用于微操作连续取消。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例调度部件的框架结构示意图。
图3为本发明实施例依赖矩阵模块的结构示意图。
图4为本发明实施例中依赖性矩阵的清除机制的实现原理示意图。
图5为本发明实施例中寄存器号(标签)比较机制的实现原理示意图。
具体实施方式
如图1所示,本实施例用于乱序超标量处理器的操作依赖性调度方法包括:
1)对译码后的新微操作进行重命名,获取微操作之间的依赖信息,派遣到发射队列;
2)采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵,并选择就绪的微操作分别发射到各条执行流水线;
3)在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较,若匹配则直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数,且若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;否则,从寄存器堆中获取源操作数;
4)若被发射的微操作未被取消,则在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号。
步骤1)首先在RENAME(重命名)模块对新进入的微操作uop1进行重命名(Rename),解决写后写与读后写两种类型的相关性。对新进入的微操作进行重命名时,目的寄存器的重命名操作为微操作的目的寄存器分配一个物理寄存器的寄存器号(标签tag),源寄存器的重命名操作为将源寄存器在寄存器映射表做映射,得到源寄存器对应的物理寄存器的寄存器号(标签tag)。本实施例中,步骤1)中获取微操作之间的依赖信息是通过用于记录未写回结果的微操作的目的存储器号的生产者表(本实施例中命名为producer)来实现的,获取微操作之间的依赖信息包括:将译码后的新微操作的源操作数的寄存器号、生产者表中记录各条未写回结果的微操作的目的存储器号进行映射匹配,则两者相匹配判定译码后的新微操作对于所匹配的未写回结果的微操作具有依赖关系。
生产者表记录于记录未写回结果的微操作的目的存储器号可根据需要采用所需的形式。例如,作为一种具体的实施方式,本实施例中生产者表中的每一行表示一条微操作,且每一行包括两列(栏),第一列(栏)为微操作序号,第二列(栏)为微操作的目的存储器号的标签值。本实施例中,步骤2)中采用依赖性矩阵记录微操作之间的依赖信息包括:在依赖性矩阵中为译码后的新微操作生成一项记录,该项记录对应所有未写回结果的微操作均包含一个对应的标志位,该标志位取值为1,表示译码后的新微操作依赖于该标志位对应的未写回结果的微操作,该标志位取值为0,表示译码后的新微操作不依赖于该标志位对应的未写回结果的微操作。若微操作uop1包含目的操作数,则在生产者表中为其分配一项,并将微操作序号与其目的寄存器号(标签tag)填入对应栏中。步骤1)最后将重命名完成的微操作派遣至发射队列,同时将检测出来的依赖信息传递给依赖性矩阵(Dependency Matrix)。将完成重命名的微操作派遣至producer项对应的发射队列项,同时将检测出来的源操作数依赖信息写入依赖性矩阵的对应行,即若微操作i依赖微操作j,则当将微操作i派遣至发射队列项时,也同时在依赖性矩阵对应行上填入微操作数i的信息,第i行第j列的矩阵中填入1。
派遣完成后,微操作进入发射队列中,并处于ISSUE0(发射前)阶段,此阶段会维护更新依赖性矩阵,从执行流水线反馈回来的清除信息释放依赖性矩阵中将要执行完毕的微操作并清除依赖于它的所有依赖信息。
本实施例中,步骤2)中根据执行流水线返回的写回结果的微操作信息更新依赖性矩阵包括:在每一个时钟周期接收各条执行流水线返回写回结果的微操作对应的入口编号entry_num,将各条执行流水线返回写回结果的所有微操作对应的入口编号entry_num译码形成清除向量,并将该清除向量对应的依赖性矩阵中每一个入口编号entry_num对应的微操作释放,并将所有依赖于被释放微操作的其他微操作的对应标志位置为0;步骤4)中返回即将写回结果的微操作信息是指将同一条执行流水线中所有流水站返回的即将写回结果的微操作信息生成一个选择向量Px_Entry_num,所述选择向量Px_Entry_num与执行流水线、依赖性矩阵三者均一一对应,所述选择向量Px_Entry_num中某一位的值为1表示依赖性矩阵中对应的微操作即将写回结果。
表1为不同执行时钟周期微操作反馈清除情况表,表1描述不同时钟周期的微操作在执行段的哪个时钟周期会将清除信息反馈回依赖性矩阵,其中i1~i3站以及e1~e6站分别为同一条执行流水线中的各个流水站。
表1:不同延迟时间微操作反馈清除情况表示例。
反馈回的清除信息指示这条微操作即将执行完毕,若依赖于它的微操作此时被唤醒发射,在被唤醒发射微操作的i3站能取得需要的源操作数据。我们首先假设ISSUE段有三个时钟周期,则执行时间为2个时钟周期(cycle)的微操作在i2站反馈清除信息,执行时间为3cycle的微操作在i3站反馈清除信息,执行时间为4cyc的微操作在e1站反馈清除信息,执行时间为5cyc的微操作在e2站反馈清除信息,执行时间为6cyc的微操作在e3站反馈清除信息。以2cyc的微操作uop3为例,它在i2站唤醒依赖于它的微操作uop4,微操作uop4最早会在微操作uop3的i3站进行发射,这种情况下微操作uop3的i3站对应于微操作uop4的i1站,微操作uop3会在e2站算出结果,此站对应于微操作uop4的i3站,即可满足微操作uop4在i3站需拿到源操作数的要求。
参见图4,清除的信息来自于n条执行流水线Pipeline 1~Pipeline n,因为流水线中执行的微操作的执行时钟周期数有多种情况,那么需要反馈清除信息的流水站也会有多种情况,所以每条执行流水线会根据其中正在执行的微操作的执行周期信息选择反馈回哪个流水站的Entry_num信息,Entry_num信息指示该微操作在依赖性矩阵当中存在哪一行,也即需要清除哪一列的依赖信息,由于流水线可能有多条,所以每个流水线均需要反馈回Entry_num信息,例如P1_Entry_num_e3是流水线pipeline1的e3站要反馈的Entry_num,与它同样为实线的线代表pipeline1其他各流水站反馈的Entry_num,所有的信息进入选择器1进行选择。同样的,P2_Entry_num_e3是流水线pipeline2的e3站要反馈的Entry_num,与它同样为虚线的线代表pipeline2其他各流水站反馈的Entry_num,所有的信息进入选择器2进行选择,此处只绘出pipeline 1、2的反馈机制,其余的流水线同理,经两个选择器选择产生的P1_Entry_num、P2_Entry_num表示pipeline 1、2反馈回依赖性矩阵的Entry_num信息。这些信息进入译码器,将信息译码成清除向量,清除向量的第i位为1代表了依赖性矩阵第i行的微操作即将执行完成,可以将依赖性矩阵第i列的依赖信息清除(置0)。清除向量的每一位信息清除信号被传递至依赖性矩阵的每一列,用于将清除依赖性矩阵的对应列。
表2为不同执行时间微操作寄存器号(tag)比较情况表,该表描述不同时钟周期的微操作在执行段的哪个时钟周期会将目的寄存器的tag信息反馈回i1站,直接由执行流水线反馈的目的寄存器的tag信息是dly0_tag,同时还有dly1_tag、dly2_tag这两种目的寄存器的tag信息。表2中,其中i1~i3站以及e1~e6站分别为同一条执行流水线中的各个流水站。
表2不同执行时间微操作tag比较情况表示例。
延迟 | i1 | i2 | i3 | e1 | e2 | e3 | e4 | e5 | e6 |
2cyc | dly0 | ||||||||
3cyc | dly0 | ||||||||
4cyc | dly0 | ||||||||
5cyc | dly0 | ||||||||
6cyc | dly0 |
表2为不同执行时间微操作tag比较情况表,该表描述不同时钟周期的微操作在执行段的哪个时钟周期会将目的寄存器的寄存器号信息(dly0)反馈回i1站,直接由执行流水线反馈的目的寄存器的寄存器号信息是dly0_tag,本实施例中同时还有dly1_tag、dly2_tag这两种目的寄存器的寄存器号信息。dly1_tag、dly2_tag分别由dly0_tag寄存一个周期和寄存两个周期得到。之所以需要dly1_tag、dly2_tag,是因为微操作在所依赖的微操作写回数据的前三拍即唤醒,若已唤醒的微操作并未在下一时钟周期即发射执行,而是延迟了一拍或者两拍才发射,那么他们需要从旁路获得数据,所以需要dly1_tag、dly2_tag与它的源操作数寄存器号比较,获取旁路来源信息。值得注意的是,延迟三拍及以上的微操作其源操作数已写入寄存器堆,不需再额外比较获取源操作数来源信息。三种目的寄存器的寄存器号信息将与i1站微操作的每个源寄存器的寄存器号信息进行比较。我们首先假设ISSUE段有三个时钟周期,则执行时间为2个时钟周期(cyc)的微操作在i2站反馈目的寄存器的寄存器号信息,执行时间为3cyc的微操作在i3站反馈目的寄存器的寄存器号信息,执行时间为4cyc的微操作在e1站反馈目的寄存器的寄存器号信息,执行时间为5cyc的微操作在e2站反馈目的寄存器的寄存器号信息,执行时间为6cyc的微操作在e3站反馈目的寄存器的寄存器号信息。以2cyc的微操作uop5为例,它在i2站反馈它的目的寄存器dly0_tag信息,此时i1站的微操作为微操作uop6,微操作uop6的源操作寄存器号与微操作uop5反馈回来的寄存器号信息进行比较,随后将由比较结果转化而来的源操作数来源信息与取得操作数的时序信息打拍传至微操作uop6的i3站,i3站时微操作uop6取得它的源操作数。下一个时钟周期,微操作uop5反馈的寄存器号信息寄存一拍成为dly1_tag,它继续与i1站的微操作进行寄存器号比较,此时i1站的微操作为微操作uop7,微操作uop7的源操作的寄存器号与微操作uop5反馈回来的dly1_tag进行比较,随后将由比较结果转化而来的源操作数来源信息与取得操作数的时序信息打拍传至微操作uop7的i3站。再下一个时钟周期,uop5反馈的寄存器号信息继续寄存一拍成为dly2_tag,接下来的操作与dly0、dly1同理。如上述所述,每个i1站的微操作的每个微操作需与当前时钟周期的dly0_tag、dly1_tag、dly2_tag进行比较。匹配结果寄存至它的i3站选择正确的源操作数。
图5为寄存器号(标签tag)比较机制图,反馈的dly0_tag信息来自于执行流水线Pipeline1~Pipeline n,因为执行流水线中执行的微操作的执行周期有多种情况,那么反馈dly0_tag信息(目的操作数的寄存器号)的流水站也会有多种情况,所以每条流水线会根据其中正在执行的微操作的执行周期信息选择反馈哪个流水站的dly0_tag信息。由于流水线可能有多条,所以每条流水线均需要反馈dly0_tag信息,P1_Res_dly0_tag_e3是执行流水线pipeline1的e3站要反馈的dly0_tag,与它同样为实线的线代表pipeline1其他各流水站反馈的dly0_tag,所有的信息进入选择器1的进行选择。同样的,P2_Res_dly0_tag_e3是流水线pipeline2的e3站要反馈的dly0_tag,与它同样为虚线的线代表pipeline2其他各流水站反馈的dly0_tag,所有的信息进入选择器2进行选择。需要说明的是,此处只绘出了执行流水线pipeline 1、2的反馈机制进行示例,其余的流水线同理,经两个选择器选择产生的P1_Res_dly0_tag、P2_Res_dly0_tag表示pipeline 1、2反馈回i1站的dly0_tag信息。每条流水线反馈回的dly0_tag均会反馈到所有流水线的i1站,反馈回的dly0_tag与i1站的微操作源寄存器的寄存器号(标签tag)进行比较。此外dly0_tag会在i1站进行寄存打拍得到dly1_tag、dly2_tag,也会与i1站的微操作源寄存器的寄存器号进行比较。
微操作进入该阶段后需要等待其所有的源操作数均已经准备好,即满足发射条件,每个时钟周期依赖性矩阵检测每一项是否已经满足发射条件,形成Ready Vector,传递给选择逻辑(Select Logic),选择逻辑选取满足发射条件的最老的微操作进行发射。依赖性矩阵接收从发射执行流水段反馈回的清除信息,将清除向量中为1的位对应的依赖性矩阵行的微操作释放(即该行可以继续被后续微操作使用),并将对应的依赖性矩阵列的依赖关系清除(也即将该列全置0)。将依赖性矩阵每一项的依赖向量的每一位进行或非操作,以此判断该行项微操作的所有微操作是否已准备就绪,所有行项均进行或非操作,每一行的或非操作结果拼接形成一个Ready向量传递给选择逻辑。Ready向量中为1的位代表对应的依赖性矩阵项中的微操作已经准备就绪。选择逻辑在已Ready的微操作中选择n条满足发射条件最老的微操作发射,n为执行流水线条数。具体地,本实施例步骤2)中选择满足发射条件的微操作进行发射包括:在每一个时钟周期将依赖性矩阵中每一项记录的所有标志位进行或非操作,若或非操作的结果为1,则判定该项记录对应的微操作的源操作数全部就绪、满足发射条件,否则判定该项记录对应的微操作的源操作数尚未全部就绪、不满足发射条件;将同一个依赖性矩阵的所有或非操作的结果拼接形成就绪向量,以用于根据就绪向量在各个依赖性矩阵记载的所有源操作数全部就绪、满足发射条件的微操作中,选择其中n条最老的微操作进行发射使得每一条流水线被发射一条微操作,其中n为执行流水线的条数。
发射后微操作处于发射(ISSUE)阶段,此阶段首先将微操作源寄存器的寄存器号(标签tag)与所有相关结果总线中目的操作数寄存器号(标签tag)进行比较,比较的结果用于在随后的逻辑中获取源操作数(Grab Source Operand)。同时若寄存器号(标签tag)匹配成功后,如果产生结果的微操作uop2取消发射执行,那么依赖于它的微操作uop1也会随之取消发射执行,发射后未发生取消的微操作最后进入EXE(执行)段执行。本实施例中,步骤3)包括:将执行流水线返回即将写回结果的目的操作数的寄存器号dly0_tag送入各条执行流水线的第一级流水站i1,同时将所述寄存器号dly0_tag还通过依次连续寄存多个节拍周期形成多个中间寄存器号dlyi_tag;在各条执行流水线中,从第一级流水站i1开始,将每一级流水站中的微操作的每一个源操作数的寄存器号均与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag进行比较,若与寄存器号dly0_tag或各个中间寄存器号dlyi_tag中任意一者匹配,则确定微操作的源操作数来源为从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数、并获取源操作数的时序信息为寄存器号dly0_tag或各个中间寄存器号dlyi_tag对应的时序,若将寄存器号dly0_tag作为的目的操作数寄存器的微操作被取消,则流水站将所发射的微操作也取消;若与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag均布匹配,则从寄存器堆中获取源操作数。
如表1和表2所示,微操作执行到其执行周期对应的流水站时,反馈清除信息和dly0_tag信息,即当微操作uop10为2cycle的微操作,它执行至i2站时,反馈清除信号和dly0_tag信号。清除信号指示uop10原先所在的发射队列项(同依赖性矩阵项),dly0_tag信号指示uop10的目的寄存器号。如图5所示,i2及i2站以后的流水站反馈的清除信号经过选择器选择成为Px_Entry_num,指示流水线反馈的清除信号为哪一个发射队列项,随后所有的流水线反馈的Px_Entry_num信号进入译码器中,译码出清除向量,清除向量的某一位为1,表示将该位对应的发射队列项释放(即该项可以继续被后续微操作使用),将该位对应的依赖性矩阵行的微操作释放(即该行可以继续被后续微操作使用),并将对应的依赖性矩阵列的依赖关系清除(也即将该列全置0)。如图5所示,i2及i2站以后的流水站反馈的dly0_tag信号经过选择器选择成为Px_Res_dly0_tag(其中x为执行流水线序号),随后所有的流水线反馈的Px_Res_dly0_tag信号与i1站的每个源操作数ptag比较匹配,Px_Res_dly0_tag会寄存一个周期为Px_Res_dly1_tag,并与i1站的每个源操作数的寄存器号ptag比较匹配,Px_Res_dly1_tag会继续寄存一个周期为Px_Res_dly2_tag,同样也会与i1站的每个源操作数的寄存器号ptag比较匹配。它们的比较结果用于源操作来源确定与已发射微操作快速取消。
综上所述,本实施例提出了一种乱序超标量处理器中指令/操作数依赖性的调度方法,实施例方法结合了依赖性矩阵和tag(标签,即寄存器号)比较两种依赖检测与跟踪方法。本发明在,发射前阶段(issue0)使用依赖性矩阵检测与跟踪判断发射队列中的每个微操作能否满足发射条件;在发射阶段使用寄存器号比较,若寄存器号比较匹配上,则后续根据匹配上的比较结果从对应的旁路中正确地取到源操作数,若寄存器号比较未匹配上,则后续从寄存器堆中获取源操作数。同时将寄存器号比较结果用于多条微操作的连续取消,当前面的任一微操作uop0因为某些原因被取消,与微操作uop0存在依赖关系的后续微操作uop1若已发射,则需要连续取消后续的微操作uop1的发射执行。本实施例方法仅需要较少的比较逻辑,能实现微操作的依赖性检测、快速唤醒、源操作数来源的确定以及具有依赖性的微操作快速取消,有效地解决了因发射队列项数和执行通路增加带来的依赖性检测、跟踪与处置复杂度大幅提升的难题。
如图2所示,本实施例还提供一种用于应用前述用于乱序超标量处理器的操作依赖性调度方法的操作依赖性调度部件,包括:
重命名模块,用于对译码后的新微操作进行重命名;
依赖检测模块(Dependency Detector),用于获取微操作之间的依赖信息;
派遣模块,用于将完成依赖信息检测的微操作派遣到发射队列;
依赖矩阵模块,用于采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵;
选择逻辑,用于基于依赖矩阵模块选择就绪的微操作分别发射到各条执行流水线;
标签比较器,用于在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较;
源操作数获取模块,用于在标签比较器比较得到的结果为匹配时,直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数;否则从寄存器堆中获取源操作数;
微操作取消模块,用于在标签比较器比较得到的结果为匹配时,若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;
执行模块,用于在被发射的微操作未被取消时在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号;
依赖矩阵模块与微处理器中的执行流水线一一对应,如图3所示,依赖矩阵模块包括:
入口寄存项,用于记录依赖矩阵模块对应的发射队列中的任意一项的入口编号;
有效标志位,用于表示依赖矩阵模块对应发射队列中的任意一项微操作的有效状态;
依赖性矩阵,用于记录所有未写回微操作之间的依赖性信息,所述依赖性矩阵中的任意第i行第j列的标志位表示发射队列中第i项微操作的源操作数依赖于第j项微操作的目的操作数的状态,状态为1表示有依赖关系,状态为0表示无依赖关系;依赖性矩阵的每一行可放置一个微操作的依赖性信息,一行的所有位构成依赖向量(dependency vector),依赖向量的每一位(标志位)指示该微操作是否依赖于对应列的微操作,也即该微操作的源操作数是否是对应列微操作的目的操作,例如图3中a所指的第1行第2列的标识位则表示第1个位操作依赖于第2个位操作的标志位,若存在依赖,则该位置1,否则置0。
或非逻辑,用于将依赖性矩阵每一行的所有位进行或非运算,并将或非运算结果形成该行的微操作对应的就绪向量以用于选择就绪的微操作分别发射到对应的执行流水线,若该就绪向量为1的位则表示该位所对应的微操作的源操作数全部就绪、满足发射条件;
译码器,用于根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵。
每个时钟周期执行流水线会反馈回即将要执行完毕的微操作所在入口编号(entry_num)。入口编号(entry_num)。经译码器译码之后形成清除向量(Clear Vector),清除向量(Clear Vector)的位数与依赖性矩阵的列数相同,将清除向量(Clear Vector)每一位传递至对应的依赖性矩阵列,若清除向量(Clear Vector)第i位的信号为1,代表依赖性矩阵第i列的依赖性信息需要被清除,否则不需要。每个时钟周期对依赖性矩阵每一项的依赖向量每一位进行或非操作,每一项的或非结果最后形成就绪向量。就绪向量的每一位指示依赖性矩阵对应行的微操作是否准备好发射,最后就绪向量被送给选择逻辑以进行发射。
本实施例操作依赖性调度部件用于执行前述用于乱序超标量处理器的操作依赖性调度方法的步骤,同样也可以在唤醒阶段采用依赖性矩阵检测依赖性并快速高效地唤醒微操作,在后续发射阶段使用寄存器号(标签tag)比较,跟踪依赖性,并通过跟踪的依赖性,动态且高效地获取源操作数,以及实现存在依赖关系的微操作快速连续取消。切实地做到了将依赖性检测和微操作唤醒置于唤醒阶段,将已发射微操作通过寄存器号(标签tag)比较结果确定源操作数、实现连续取消这两项置于后续发射阶段,使得唤醒阶段与发射阶段彻底解耦,唤醒微操作由依赖性矩阵检测并处置依赖性信息,不再需要寄存器号(标签tag)比较的结果,使得调度机制需要的比较器逻辑大幅减少,与此同时也同样能实现微操作的快速唤醒、源操作数来源的确定以及具有依赖性的微操作连续取消,有效地解决了因发射队列深度加深,执行通路拓宽带来的微操作依赖性检测、跟踪、处置复杂度提升的问题。
此外,本实施例还提供一种乱序超标量处理器,包括译码器和与译码器相连的后端调度模块,该后端调度模块被编程或配置以执行前述用于乱序超标量处理器的操作依赖性调度方法的步骤,或者所述后端调度模块为前述的操作依赖性调度部件。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施前述用于乱序超标量处理器的操作依赖性调度方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种用于乱序超标量处理器的操作依赖性调度方法,其特征在于,包括:
1)对译码后的新微操作进行重命名,获取微操作之间的依赖信息,派遣到发射队列;
2)采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵,并选择就绪的微操作分别发射到各条执行流水线;
3)在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较,若匹配则直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数,且若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;否则,从寄存器堆中获取源操作数;
4)若被发射的微操作未被取消,则在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号。
2.根据权利要求1所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,步骤1)中获取微操作之间的依赖信息是通过用于记录未写回结果的微操作的目的存储器号的生产者表来实现的,所述获取微操作之间的依赖信息包括:将译码后的新微操作的源操作数的寄存器号、生产者表中记录各条未写回结果的微操作的目的存储器号进行映射匹配,则两者相匹配判定译码后的新微操作对于所匹配的未写回结果的微操作具有依赖关系。
3.根据权利要求2所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,所述生产者表中的每一行表示一条微操作,且每一行包括两列,第一列为微操作序号,第二列为微操作的目的存储器号的标签值。
4.根据权利要求1所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,步骤2)中采用依赖性矩阵记录微操作之间的依赖信息包括:在依赖性矩阵中为译码后的新微操作生成一项记录,该项记录对应所有未写回结果的微操作均包含一个对应的标志位,该标志位取值为1,表示译码后的新微操作依赖于该标志位对应的未写回结果的微操作,该标志位取值为0,表示译码后的新微操作不依赖于该标志位对应的未写回结果的微操作。
5.根据权利要求4所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,步骤2)中根据执行流水线返回的写回结果的微操作信息更新依赖性矩阵包括:在每一个时钟周期接收各条执行流水线返回写回结果的微操作对应的入口编号entry_num,将各条执行流水线返回写回结果的所有微操作对应的入口编号entry_num译码形成清除向量,并将该清除向量对应的依赖性矩阵中每一个入口编号entry_num对应的微操作释放,并将所有依赖于被释放微操作的其他微操作的对应标志位置为0;步骤4)中返回即将写回结果的微操作信息是指将同一条执行流水线中所有流水站返回的即将写回结果的微操作信息生成一个选择向量Px_Entry_num,所述选择向量Px_Entry_num与执行流水线、依赖性矩阵三者均一一对应,所述选择向量Px_Entry_num中某一位的值为1表示依赖性矩阵中对应的微操作即将写回结果。
6.根据权利要求4所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,步骤2)中选择满足发射条件的微操作进行发射包括:在每一个时钟周期将依赖性矩阵中每一项记录的所有标志位进行或非操作,若或非操作的结果为1,则判定该项记录对应的微操作的源操作数全部就绪、满足发射条件,否则判定该项记录对应的微操作的源操作数尚未全部就绪、不满足发射条件;将同一个依赖性矩阵的所有或非操作的结果拼接形成就绪向量,以用于根据就绪向量在各个依赖性矩阵记载的所有源操作数全部就绪、满足发射条件的微操作中,选择其中n条最老的微操作进行发射使得每一条流水线被发射一条微操作,其中n为执行流水线的条数。
7.根据权利要求1所述的用于乱序超标量处理器的操作依赖性调度方法,其特征在于,步骤3)包括:将执行流水线返回即将写回结果的目的操作数的寄存器号dly0_tag送入各条执行流水线的第一级流水站i1,同时将所述寄存器号dly0_tag还通过依次连续寄存多个节拍周期形成多个中间寄存器号dlyi_tag;在各条执行流水线中,从第一级流水站i1开始,将每一级流水站中的微操作的每一个源操作数的寄存器号均与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag进行比较,若与寄存器号dly0_tag或各个中间寄存器号dlyi_tag中任意一者匹配,则确定微操作的源操作数来源为从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数、并获取源操作数的时序信息为寄存器号dly0_tag或各个中间寄存器号dlyi_tag对应的时序,若将寄存器号dly0_tag作为的目的操作数寄存器的微操作被取消,则流水站将所发射的微操作也取消;若与寄存器号dly0_tag以及各个中间寄存器号dlyi_tag均布匹配,则从寄存器堆中获取源操作数。
8.一种用于应用权利要求1~7中任意一项所述用于乱序超标量处理器的操作依赖性调度方法的操作依赖性调度部件,其特征在于,包括:
重命名模块,用于对译码后的新微操作进行重命名;
依赖检测模块,用于获取微操作之间的依赖信息;
派遣模块,用于将完成依赖信息检测的微操作派遣到发射队列;
依赖矩阵模块,用于采用依赖性矩阵记录微操作之间的依赖信息,并根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵;
选择逻辑,用于基于依赖矩阵模块选择就绪的微操作分别发射到各条执行流水线;
标签比较器,用于在各条执行流水线中,将被发射的微操作的源作数的寄存器号、执行流水线返回即将写回结果的目的操作数的寄存器号进行比较;
源操作数获取模块,用于在标签比较器比较得到的结果为匹配时,直接从执行流水线返回的目的操作数寄存器对应的旁路中获取源操作数;否则从寄存器堆中获取源操作数;
微操作取消模块,用于在标签比较器比较得到的结果为匹配时,若从执行流水线返回的目的操作数寄存器对应的微操作被取消则将所发射的微操作也取消;
执行模块,用于在被发射的微操作未被取消时在执行流水线中执行被发射的微操作,且当被发射的微操作在执行流水线中执行到其执行周期对应的流水站返回该微操作的微操作信息以及目的操作数的寄存器号;
所述依赖矩阵模块与微处理器中的执行流水线一一对应,且依赖矩阵模块包括:
入口寄存项,用于记录依赖矩阵模块对应的发射队列中的任意一项的入口编号;
有效标志位,用于表示依赖矩阵模块对应发射队列中的任意一项微操作的有效状态;
依赖性矩阵,用于记录所有未写回微操作之间的依赖性信息,所述依赖性矩阵中的任意第i行第j列的标志位表示发射队列中第i项微操作的源操作数依赖于第j项微操作的目的操作数的状态,状态为1表示有依赖关系,状态为0表示无依赖关系;
或非逻辑,用于将依赖性矩阵每一行的所有位进行或非运算,并将或非运算结果形成该行的微操作对应的就绪向量以用于选择就绪的微操作分别发射到对应的执行流水线,若该就绪向量为1的位则表示该位所对应的微操作的源操作数全部就绪、满足发射条件;
译码器,用于根据执行流水线返回的即将写回结果的微操作信息更新依赖性矩阵。
9.一种乱序超标量处理器,包括译码器和与译码器相连的后端调度模块,其特征在于,所述后端调度模块被编程或配置以执行权利要求1~7中任意一项所述用于乱序超标量处理器的操作依赖性调度方法的步骤,或者所述后端调度模块为权利要求8所述的操作依赖性调度部件。
10.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其特征在于,该计算机程序用于被微处理器执行以实施权利要求1~7中任意一项所述用于乱序超标量处理器的操作依赖性调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361643.3A CN114780149A (zh) | 2022-04-07 | 2022-04-07 | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361643.3A CN114780149A (zh) | 2022-04-07 | 2022-04-07 | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780149A true CN114780149A (zh) | 2022-07-22 |
Family
ID=82426994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210361643.3A Pending CN114780149A (zh) | 2022-04-07 | 2022-04-07 | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780149A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841614A (zh) * | 2023-05-29 | 2023-10-03 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN117331603A (zh) * | 2023-09-18 | 2024-01-02 | 中国人民解放军军事科学院国防科技创新研究院 | 基于优先级判定的深度流水线前向旁路 |
-
2022
- 2022-04-07 CN CN202210361643.3A patent/CN114780149A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841614A (zh) * | 2023-05-29 | 2023-10-03 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN116841614B (zh) * | 2023-05-29 | 2024-03-15 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN117331603A (zh) * | 2023-09-18 | 2024-01-02 | 中国人民解放军军事科学院国防科技创新研究院 | 基于优先级判定的深度流水线前向旁路 |
CN117331603B (zh) * | 2023-09-18 | 2024-04-09 | 中国人民解放军军事科学院国防科技创新研究院 | 基于优先级判定的深度流水线前向旁路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048506B2 (en) | Tracking stores and loads by bypassing load store units | |
US5796997A (en) | Fast nullify system and method for transforming a nullify function into a select function | |
US7711929B2 (en) | Method and system for tracking instruction dependency in an out-of-order processor | |
US11175923B2 (en) | Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions | |
CN114780149A (zh) | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 | |
US7660971B2 (en) | Method and system for dependency tracking and flush recovery for an out-of-order microprocessor | |
CN101281460B (zh) | 处理多个线程的方法和设备 | |
US9292288B2 (en) | Systems and methods for flag tracking in move elimination operations | |
US20030061467A1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US20140281432A1 (en) | Systems and Methods for Move Elimination with Bypass Multiple Instantiation Table | |
US6463524B1 (en) | Superscalar processor and method for incrementally issuing store instructions | |
US20030182536A1 (en) | Instruction issuing device and instruction issuing method | |
CN115576610B (zh) | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 | |
EP1644823B1 (en) | Load store unit with replay mechanism | |
US6708267B1 (en) | System and method in a pipelined processor for generating a single cycle pipeline stall | |
US20040054875A1 (en) | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU | |
JPH06236275A (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
US6829699B2 (en) | Rename finish conflict detection and recovery | |
US5784587A (en) | Method and system for recovering from cache misses | |
US8051275B2 (en) | Result path sharing between a plurality of execution units within a processor | |
US6658555B1 (en) | Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline | |
US6629235B1 (en) | Condition code register architecture for supporting multiple execution units | |
CN111857830A (zh) | 一种提前转发指令数据的通路设计方法、系统及存储介质 | |
JP2001051845A (ja) | アウトオブオーダー実行方式 | |
US11741044B2 (en) | Issuing instructions on a vector processor |
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 |