本发明专利技术的各方面包括一种更新元数据预测表的计算机实施的方法。该计算机实施的方法包括在元数据预测表中建立指令集将如何解析的预测并识别该指令集被完成。计算机实施方法还包括:在指令集的完成时,确定与指令集相关联的预测更新队列(PUQ)是否指示指令集相对于该预测以多种被禁止的方式之一解析;以及基于PUQ指示指令集以多种被禁用的方式之一解析,决定元数据预测表是待更新候选者。决定元数据预测表是待更新候选者。决定元数据预测表是待更新候选者。
【技术实现步骤摘要】
使用重新预测流水线更新元数据预测表
[0001]本专利技术总体上涉及预测流水线,并且更具体地,涉及使用重新预测流水线来更新元数据预测表的方法。
技术介绍
[0002]计算机处理器中的指令流水线通过使用多个流水线阶段处理指令来改进指令执行吞吐量,其中多个阶段可并行地对指令流的不同指令起作用。如果在流水线的指令获取阶段中获取下一指令之前,处理器等待直到指令流中的条件分支指令在流水线中的执行阶段中被解析,则条件分支指令可能导致流水线停滞。分支预测器可以尝试猜测条件分支是否被采取,并且还可以包括分支目标预测,该分支目标预测在通过解码和执行指令本身来计算分支目标之前尝试猜测所采取的条件分支或无条件分支的目标。分支目标可以是基于偏移的计算地址和/或通过寄存器的间接引用。
[0003]分支目标缓冲器(BTB)可以用于基于分支指令的地址来预测所预测的被采取分支指令的目标。预测分支指令的目标可通过不等待分支指令到达流水线的执行阶段以计算分支目标地址来防止流水线停滞。通过执行分支目标预测,可以在相同的循环中或者在分支指令之后的循环中执行分支的目标指令解码,而不是在分支指令和所预测的被采取分支指令的目标之间具有多个气泡/空循环。可被包括在BTB中或者单独实施的其他分支预测分量包括分支历史表(BHT)和模式历史表(PHT)。分支历史表可以根据分支地址来预测分支的方向(采取或不采取)。模式历史表可根据所遇到的通向待预测的给定分支的分支的图案来辅助分支的方向预测。
技术实现思路
[0004]本专利技术的实施例涉及更新元数据预测表的计算机实施的方法。
[0005]非限制性示例包括在元数据预测表中建立指令集将如何解析的预测和识别指令集被完成。该计算机实施的方法还包括:在指令集完成时,确定与指令集相关联的预测更新队列(PUQ)是否指示指令集相对于该预测以多种被禁止的方式之一解析;以及基于PUQ指示指令集以多种被禁止的方式之一解析,决定元数据预测表是待更新候选者。
[0006]本专利技术的其他实施例在计算机系统和计算机程序产品中实现上述方法的特征。
[0007]通过本专利技术的技术实现了附加技术特征和优点。在本文中详细描述了本专利技术的实施例和各方面,并且这些实施例和各方面被认为是所要求保护的主题的一部分。为了更好的理解,参考详细说明和附图。
附图说明
[0008]在说明书所附的权利要求中特别指出并明确要求保护本文所描述的独占权利的细节。从以下结合附图进行的详细描述中,本专利技术的实施例的前述和其他特征和优点将变得显而易见,在附图中:
[0009]图1示出根据本专利技术一个或多个实施例的执行芯片设计的计算机实施的方法的系统;
[0010]图2是根据本专利技术一个或多个实施例的用于更新分支预测的系统的示意图;
[0011]图3是示出根据本专利技术的一个或多个实施例的弱预测更新队列(WeakPUQ)的操作的示意图;
[0012]图4是示出根据本专利技术的一个或多个实施例的分支错误PUQ(BrWrgPUQ)的操作的示意图;
[0013]图5是示出根据本专利技术的一个或多个实施例的WeakPUQ和BrWrgPUQ的操作的流程图;
[0014]图6是示出根据本专利技术的一个或多个实施例的重新预测流水线的操作的流程图;
[0015]图7A是示出根据本专利技术的一个或多个实施例的更新元数据预测表的计算机实施的方法的流程图;
[0016]图7B是示出根据本专利技术的一个或多个另外的实施例的更新元数据预测表的计算机实施的方法的流程图;
[0017]图8是根据本专利技术的一个或多个实施例的用于执行更新分支预测的方法的计算机系统的示意图;以及
[0018]图9是根据本专利技术示范性实施例的制造集成电路的方法的工艺流程。
[0019]本文所描绘的图是说明性的。在不脱离本专利技术的精神的情况下,可以对本文所描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且不暗示元件之间的其间没有中间元件/连接的直接连接。所有这些变型被认为是说明书的一部分。
具体实施方式
[0020]本专利技术的一个或多个实施例提供了一种确定被结合来创建对分支的预测的任何预测结构是否需要更新的准确有效的方法。一组结构被创建以帮助决定分支的特定执行流水线通道是否需要对分支的预测结构进行更新。该结构和完成时间更新的写入前读取(read
‑
before
‑
write)模型的使用移除了对跟踪和应用推测更新的大部分逻辑的需要;因此减少了用于引导指令获取和解码流的关键预测时间流水线的延迟。
[0021]例如,诸如方向和目标地址之类的分支数据对通用计算机(例如,大型机)的性能是重要的,因为它允许预测结构走在当前指令之前以为机器准备其在将来需要去哪里。当这些预测结构遇到分支时,它们将分支完成的结果存储在多个不同结构中。这使得当再次预测该分支时,机器可以使用该分支的先前执行的结果来更准确地确定该分支将来将做什么。这样,能够准确地更新这些结构中的数据将使机器提高在区域中的性能。
[0022]此外,分支是计算机器中非常常见的指令。因为分支是常见的,所以具有一种方式来决定分支是否需要对其元数据进行更新是重要的。以前,这通过保存从分支被预测时到分支被完成时的数据来进行。但就硅面积和有时对于功率使用而言,这是昂贵的,尤其是当传输该数据时,因为预测和完成会相隔许多周期。例如,跟踪与更新机制相关的推测条目的年龄以尝试基于假设该预测是正确的并然后跟踪通过流水线的分支的信息来预测分支是否需要被更新。
[0023]先前解决方案的缺点是,当快速连续地执行单个分支若干次时,通常无法从分支的相关通道中了解到先前分支已经更新了预测结构。在先前的解决方案中,基于预测时间信息和分支如何完成来确定更新机制。由于先前的解决方案并不考虑分支被预测时与分支被完成时之间发生的任何更新,所以那些更新过多且可能不准确。如何进行不准确的更新的示例可能是,如果存在对分支的强度进行更新的分支的多个实例,导致它从最初的弱状态变成了强状态,但是分支的最终实例得到了分支错误。该分支错误将不会看到更新的强状态,而是从初始预测看到过时且不正确的弱状态,并基于看到过时的弱状态而作出不正确的更新。
[0024]另一缺点是,用于确定分支是否需要更新的方法通常是不准确的。在这些情况下,写入阵列和/或不必要的更新会消耗额外的电力,使得流水线作出必要的更新变慢。
[0025]先前解决方案的另外的缺点是存储并携带来自预测时间的分支数据直到完成时间。这使得当分支被解析时,预测时间信息可用于决定更新应该是什么。这成本很高,因为需要针对每个分支保持大量信息。在许多情况下,没有必要进行更新,所以跟踪是没有用的。
[0026]本专利技术的一个或多个实施例通过提供创建一组侧结构或预测更新队列(PUQ)来解决现有技术的上述缺点中的一个或多个,PUQ充当漏斗(funnel)以本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种更新元数据预测表的计算机实施的方法,所述计算机实施的方法包括:在所述元数据预测表中建立指令集将如何解析的预测;识别所述指令集被完成;在所述指令集完成时,确定与所述指令集相关联的预测更新队列PUQ是否指示所述指令集相对于所述预测以多种被禁止的方式之一解析;以及基于所述PUQ指示所述指令集以所述多个被禁止的方式之一解析,决定所述元数据预测表是待更新候选者。2.根据权利要求1所述的计算机实施的方法,其中,决定所述元数据预测表是待更新候选者包括:确定所述指令集用错误的目标、错误的方向或者作为意外被解析。3.根据权利要求1所述的计算机实施的方法,其中,决定所述元数据预测表是待更新候选者包括:观察所述元数据预测表是待更新候选者,以及确认所述元数据预测表是待更新候选者是正确的。4.根据权利要求3所述的计算机实施的方法,其中,对于所述元数据预测表处于预定义状态的情况:所述观察在在所述元数据预测表中建立所述预测时发生,并且所述观察包括:假设在所述指令集如预期那样解析的情况下将需要更新,并且将表示所述指令集的数据和所述预测作为条目写入所述PUQ之一中,以及所述确认在所述指令集完成时发生,并且所述确认包括:将完成指令的数据与表示作为先前条目被写入到所述PUQ之一中的先前指令集的数据进行比较,确定在表示所述指令集的数据与表示所述PUQ之一中的先前指令集的数据之间是否存在匹配,在匹配的情况下使所述条目无效且确认所述元数据预测表应当被更新。5.根据权利要求3所述的计算机实施的方法,其中,对于应当改变所述元数据预测表以解决分支错误实例的情况:所述观察在所述指令集的第...
【专利技术属性】
技术研发人员:JR库夫尼,AB科卢拉,J博纳诺,BR普拉斯基,ET马利,S阿穆戈图,
申请(专利权)人:国际商业机器公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。