用于判断队列项是否取消的裁决电路的制作方法

文档序号:25509497发布日期:2021-06-18 16:24阅读:100来源:国知局
用于判断队列项是否取消的裁决电路的制作方法

本实用新型涉及乱序处理器技术领域,特别涉及一种用于判断队列项是否取消的裁决电路。



背景技术:

乱序处理器的指令到了乱序队列中,就不会按照程序中指定的顺序在处理器中流动,只要满足执行的条件,后面的指令可以越过前面的指令先执行,以提高指令的执行速度。

当乱序处理器因为转移预测错、访存相关等引起重新执行,或因为例外引发的异常等发生取消的情况时,需要判断在流水线中还没有提交的指令中有哪些指令是处于转移预测错的指令、访存相关引起重新执行的指令或例外引发异常的指令的后面,属于需要跟引起取消的指令一起被取消的指令,在流水线各个阶段来取消这些指令,让这些指令重新执行,或回滚到流水线的特定阶段再开始执行。要识别出乱序队列中哪些指令是最老的,就需要知道这些指令的年龄信息,年龄信息表示指令进入流水线的先后顺序。

相关技术中,通常通过乱序处理器的裁决电路进行指令年龄信息的判断,然而,在判断时容易出现指令年龄大小的混乱问题,因此也降低了裁决电路判断队列取消项的可靠性;且由于判断的实质是通过比较器的比较实现的,因此,如果想要解决指令年龄大小的混乱问题,提高判断的速度,则需要增加大量的比较器,从而大大增加了处理器的复杂度、延时、面积以及功耗。



技术实现要素:

本实用新型旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本实用新型的目的在于提出一种用于判断队列项是否取消的裁决电路,可以提高队列取消项判断的可靠性,降低判断复杂度,减小裁决延时,提高乱序处理器的性能、降低功耗、节约面积。

为达到上述目的,本实用新型提供一种用于判断队列项是否取消的裁决电路,包括:与用于记录乱序处理器中所有指令的寄存器队列地址相连的多个异或门,其中,异或门的一个输入端与寄存器队列地址前面增加的最高位相连,另一个输入端与寄存器队列的读指针增加的最高位相连,将异或后得到的地址作为指令的年龄信息;与多个异或门相连的比较器组件,所述比较器组件用于根据指令的年龄信息判断得到指令年龄的新老;分别与乱序队列和比较器组件相连的取消部件,用于在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。

根据本实用新型的用于判断队列项是否取消的裁决电路,通过在比较器前增加的异或门异或寄存器队列地址前面增加的最高位和寄存器队列的读指针增加的最高位,得到每条指令的年龄信息,并通过比较得到年龄的新老,避免在判断时出现指令年龄大小混乱的问题,提高队列取消项判断的可靠性;由于增加的异或门可以有效减少比较的次数,因此可以直接减少所需比较器的数量,从而可以降低判断复杂度,减小裁决延时,提高乱序处理器的性能、降低功耗、节约面积。

进一步地,所述寄存器队列为重定序缓存或转移重定序缓存。

进一步地,所述比较器组件包括:多个第一级比较器,每个第一级比较器的两个输入端分别与相邻的两个异或门的输出端相连,以比较两条指令的年龄信息,判断得到指令年龄的新老。

进一步地,所述比较器组件还包括:多个第二级至第n级比较器,在后比较器的两个输入端分别与在前两个相邻比较器的输出端相连,以比较得到所有指令年龄的新老,其中,n大于等于2。

本实用新型附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本实用新型的实践了解到。

附图说明

本实用新型上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本实用新型实施例提供的用于判断队列项是否取消的裁决电路的结构示意图;

图2为根据本实用新型实施例提供的用于判断队列项是否取消的裁决电路的部分结构示例图;

图3为根据本实用新型实施例提供的用来进行年龄比较地址信息的装置示意图;

图4为根据本实用新型实施例提供的指令例外取消判断示意图;

图5为根据本实用新型实施例提供的指令转移取消判断示意图;

图6为根据本实用新型实施例提供的定点派遣队列因回滚引起取消项的判断示意图。

具体实施方式

下面详细描述本实用新型的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本实用新型,而不能理解为对本实用新型的限制。

下面参照附图描述根据本实用新型实施例提出的具有指令年龄比较功能的用于判断队列项是否取消的裁决电路。具体而言,图1为本实用新型实施例所提供的一种具有指令年龄比较功能的用于判断队列项是否取消的裁决电路的结构示意图。

如图1所示,用于判断队列项是否取消的裁决电路10包括:多个异或门100、比较器组件200和取消部件300。

其中,多个异或门100与用于记录乱序处理器中所有指令的寄存器队列地址相连,其中,异或门的一个输入端与寄存器队列地址前面增加的最高位相连,另一个输入端与寄存器队列的读指针增加的最高位相连,将异或后得到的地址作为指令的年龄信息;比较器组件200与多个异或门相连,比较器组件200用于根据指令的年龄信息判断得到指令年龄的新老;取消部件300分别与乱序队列和比较器组件相连,取消部件300用于在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。

可以理解的是,本实用新型实施例通过增加异或门实现指令年龄的比较,由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小裁决延时,提高队列取消项判断的可靠性,有效提高乱序处理器的性能、降低功耗、节约面积。

需要说明的是,当寄存器队列的读指针和写指针按地址增加的方向指向下一项时,地址增加的方向上年龄值小,其中,年龄值越小,则年龄越老,年龄值越大,则年龄越新。当寄存器队列的读指针和写指针按地址减小的方向指向下一项时,地址减小的方向上年龄值大,其中,年龄值越大,则年龄越老,年龄值越小,则年龄越新。

在本实用新型的一个实施例中,寄存器队列可以为重定序缓存或转移重定序缓存。

进一步地,在本实用新型的一个实施例中,比较器组件200包括:多个第一级比较器,每个第一级比较器的两个输入端分别与相邻的两个异或门的输出端相连,以比较两条指令的年龄信息,判断得到指令年龄的新老。

举例而言,如图2所示,以两个异或门和一个第一级比较器为例进行指令1和指令2的年龄信息的大小比较,具体如下:两个异或门分别为第一异或门和第二异或门,两个异或门的一个输入端均与寄存器队列的读指针增加的最高位相连,第一异或门的另一输入端与指令1对应地址前面增加的最高位相连,第二异或门的另一输入端与指令2对应地址前面增加的最高位相连,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。

进一步地,本实用新型实施例中可以通过如图3所示的装置用来进行年龄比较地址信息。例如,在重定序缓存和转移重定序缓存地址前面再增加一位最高位,用重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存地址的最高位,将异或后得到的地址作为指令的年龄信息,即,

roqid0_cmp={roqid0[highestbit]^roqhead[highestbit],roqid0[highestbit-1:0]};

roqid1_cmp={roqid1[highestbit]^roqhead[highestbit],roqid1[highestbit-1:0]};

再使用roqid0_cmp与roqid1_cmp进行地址大小的比较,得到两条指令的年龄新老。其中,roqid0[highestbit]和roqid1[highestbit]表示两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,roqhead[highestbit]表示重定序缓存或转移重定序缓存的读指针增加的最高位,roqid0[highestbit-1:0]和roqid1[highestbit-1:0]表示两个需要比较的重定序缓存或转移重定序缓存地址0至最高位-1,roqid0_cmp和roqid1_cmp表示将异或后得到的地址,图3中,roqid0_cmp[highestbit]和roqid1_cmp[highestbit]表示最高位异或后得到的地址,roqid0_cmp[highestbit-1:0]和roqid1_cmp[highestbit-1:0]与roqid0[highestbit-1:0]和roqid1[highestbit-1:0]的地址一样。

进一步地,在本实用新型的一个实施例中,比较器组件200还包括:多个第二级至第n级比较器,在后比较器的两个输入端分别与在前两个相邻比较器的输出端相连,以比较得到所有指令年龄的新老,其中,n大于等于2。

可以理解的是,第二级比较器的两个输入端分别与两个相邻的第一级比较器的输出端相连,第三级比较器的两个输入端分别与两个相邻的第二比较器的输出端相连,依次类推,将第一级至n级比较器进行连接。需要说明的是,本领域技术人员可以根据设计的需求设计每一级比较器的数量和所以比较器的级数,在此不做具体限定。

举例而言,如图4所示,对于发生例外(exception)引发异常取消的情况,流水线中的每一条指令都带有指令的重定序缓存地址,即roqid号,在流水线中的指令比较自己的roqid号增加的最高位异或重定序缓存头指针roqhead最高位后得到的年龄值,与发生例外引起异常的指令的roqid号最高位异或roqhead最高位后得到的年龄值进行比较,如果自己的年龄比发生例外的指令新,则进行取消。

如图5所示,对于发生转移预测错引起取消的情况,流水线中的每一条指令都带有指令的转移重定序缓存地址,即brqid号,在流水线中的指令比较自己的brqid号增加的最高位异或转移重定序缓存头指针brqhead增加的最高位后得到的年龄值,与发生转移预测错引起取消指令的brqid号增加的最高位异或brqhead增加的最高位后得到的年龄值进行比较,如果自己的年龄比转移预测错引起取消的指令新,则进行取消。

对于回滚的情况,如发生访存相关引起的重新执行,即发现存数指令(store)后面到下一条相关的存数指令(store)之间有地址相关的取数指令(load)已经写回,则将该取数指令(load)及后面年龄比该取数指令新的都进行回滚,回滚的取数指令及后面的所有指令在派遣队列重新执行。回滚指令的判断也是根据指令的roqid号增加的最高位异或重定序缓存头指针roqhead增加的最高位后得到的年龄值,判断哪些指令比这条引起回滚的取数指令新,则需要重新执行。如图6所示,在定点派遣队列中,根据roqid号增加的最高位异或roqhead增加的最高位作为比较的年龄信息,计算所得的取消项的信息,可见定点派遣队列从第3项开始需要被取消重新执行。

根据本实用新型实施例提出的用于判断队列项是否取消的裁决电路,通过在比较器前增加的异或门异或寄存器队列地址前面增加的最高位和寄存器队列的读指针增加的最高位,得到每条指令的年龄信息,并通过比较得到年龄的新老,避免在判断时出现指令年龄大小混乱的问题,提高队列取消项判断的可靠性;由于增加的异或门可以有效减少比较的次数,因此可以直接减少所需比较器的数量,从而可以降低判断复杂度,减小裁决的延时,提高乱序处理器的性能、降低功耗、节约面积。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本实用新型的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本实用新型的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本实用新型的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本实用新型的限制,本领域的普通技术人员在本实用新型的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1