一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在处理器中的上下文切换时交换和恢复上下文特定的分支预测器状态的制作方法

2022-04-14 04:40:24 来源:中国专利 TAG:


1.本公开的技术涉及用于在计算机处理器(“处理器”)中执行的指令的处理,并且更具体地,涉及处理器中的分支指令的分支预测。


背景技术:

2.微处理器(也被称为“处理器”)执行各种应用的计算任务。常规的微处理器包括中央处理单元(cpu),该cpu包括一个或多个处理器核,也被称为“cpu核”。cpu执行计算机程序指令(“指令”)(也被称为“软件指令”)以基于数据执行操作并生成结果(即,产生值)。生成产生值的指令是“生产者”指令。例如,产生值然后可以存储在存储器中,作为输出提供给输入/输出(“i/o”)设备,或者可以用作由cpu执行的另一“消费者”指令的输入值。因此,消费者指令取决于由生产者指令产生的产生值作为消费者指令的输入值以用于执行。
3.处理器可以采用指令流水线作为一种处理技术,由此可以通过将每个指令的处理拆分成一系列步骤来增加正在执行的计算机指令的吞吐量。这些步骤在由多个阶段组成的执行流水线中执行。如果执行流水线中的所有阶段能够随着指令在(多个)指令流水线中被排序而同时且顺序地处理指令,则可以实现最佳处理器性能。然而,在其中无法在不导致不正确计算结果的情况下执行下一指令的指令流水线中可能发生结构性风险。例如,控制风险可能由于导致处理器中的精确中断的控制流指令的执行而发生。可能导致控制风险的控制流指令的一个示例是条件分支指令。条件分支指令可以基于在执行控制分支指令时评估的结果来重定向指令执行的流程路径。结果是,处理器可能不得不停止附加指令的提取,直到条件控制指令已执行,从而导致处理器性能降低和功耗增加。
4.用于最大化处理器性能的一种方法涉及利用预测电路来推测性地预测条件分支指令的结果。例如,条件分支指令的所采用的路径的预测可以基于程序历史,该程序历史被存储在指令流水线中的私有分支预测存储器(例如,私有分支预测表)中并可以包括先前执行的条件分支指令的分支预测历史。当条件分支指令最终到达指令流水线的执行阶段并被执行时,通过将条件分支指令的结果目标地址与先前在提取条件分支指令时预测的目标地址进行比较来验证条件分支指令的结果目标地址。如果预测目标地址与实际目标地址相匹配,这表示做出了正确的预测,则指令执行不会发生延迟,因为在条件分支指令到达指令流水线的执行阶段时,目标地址处的后续指令将被正确提取并已经存在于指令流水线中。由于处理器不必停止在条件分支指令之后的处理指令,直到条件分支指令被执行,所以也降低了功耗。因此,可以通过在处理器中采用准确的分支预测来改善性能和功耗。然而,如果预测目标地址与实际目标地址不匹配,则在指令流水线中发生错误预测分支风险,从而导致精确中断。结果是,执行错误预测恢复过程,由此指令流水线被刷新且指令流水线提取单元被重定向以从目标地址开始提取新指令,导致延迟和性能降低。处理器中的指令处理的错误预测会导致在延迟和性能降低方面代价高昂。因此,分支预测越准确,就可以实现改善的性能和功耗节省,并且抵消在错误预测恢复中出现的任何降低的性能和功耗。
5.通常,分支预测表容量越大的分支预测器越准确,因为分支预测器可以存储更多程序历史以进行分支预测。然而,处理器的设计和性能约束(诸如,周期时间和面积约束)可能会限制分支预测器的分支预测表的大小。用于在无需在指令流水线中的分支预测器中分配附加存储空间的情况下扩大分支预测表的存储器大小的一种方法是分配附加存储器以在指令流水线的提取阶段之外将分支预测历史存储在单独的、共享的、较低级别的存储器中。例如,较大分支预测存储器可以在主存储器或为处理器服务的较低级别的高速缓冲存储器中被分配。指令流水线中的较小分支预测表可以作为分支预测存储器的高速缓存。分支预测存储器在处理器中执行的进程(例如,线程)的不同上下文之间被共享,以用于存储和访问分支预测历史。分支预测状态可以在指令流水线中的分支预测器中的较小分支预测表与如高速缓冲存储器等分支预测存储器之间被换入和换出。因此,可以增加指令流水线中的分支预测器中的分支预测表的有效容量,以提高分支预测精度,而不必增加分支预测器中的分支预测表。
6.然而,提供更大容量的共享分支预测存储器可能是关于在处理器中执行的应用的泄露信息的来源,从而使应用遭受安全漏洞。例如,在处理器中执行的恶意攻击者应用可以启动分支预测器以将分支预测历史置于预定义状态。因此,稍后,当受害者应用被执行时,攻击者应用在共享分支预测存储器中启动的预定义分支预测历史状态将被高速缓存到分支预测器的分支预测表中并影响受害者应用的推测性执行路径。受害者应用将导致分支预测表中的分支预测条目中的一些分支预测条目被更新和/或驱逐到共享分支预测存储器中。因此,当攻击者应用恢复执行时,它可以访问共享分支预测存储器,以检测由于受害者应用执行而导致的分支预测状态的变化并提取有关受害者应用的信息。可以禁用分支预测以避免这样的安全漏洞,但是这会破坏分支预测的性能优势。防止这种安全漏洞的备选解决方案可能是在每次上下文切换时刷新分支预测存储器,并因此不会出现由所执行的应用而导致的分支预测历史更新的泄漏。然而,这会导致分支预测器在每次上下文切换之后都必须被重新训练,并且会导致训练期间分支预测的精度降低。


技术实现要素:

7.本文中所公开的方面包括在处理器中的上下文切换时交换和恢复上下文特定的分支预测器状态。上下文是在中央处理单元(cpu)的处理器中执行的应用的进程(“进程”)使用的最小数据集,该进程被保存以允许任务被中断并稍后从同一中断点处执行。上下文切换存储中断进程的上下文状态,从而使上下文状态稍后可以从同一点处被恢复并在处理器中恢复进程的执行。上下文切换允许多个进程共享单个处理器。在这点上,处理器包括指令处理电路,该指令处理电路包括多个指令处理级,该多个指令处理级被配置为根据数据流执行来流水线化所提取的指令的处理和执行。指令处理电路包括在提取级中的提取电路,提取电路被配置为从指令存储器提取要插入到指令流水线中以执行的指令。分支预测电路被配置为推测性地预测所提取的分支指令(例如,条件分支指令、间接分支指令、返回分支指令)的结果,以用于确定要由提取电路提取到指令流水线中的下一指令。分支预测电路被配置为访问分支预测状态以推测性地预测分支指令的结果。
8.在本文中所公开的示例性方面,分支预测电路包括私有分支预测存储器(例如,分支预测表电路),私有分支预测存储器被配置为存储正在执行的当前进程的上下文(“当前
上下文”)的分支预测状态)以在执行期间在预测当前上下文中的分支指令的结果时使用。私有分支预测存储器仅受当前上下文影响,而不受当前未执行的其他进程的上下文影响。当处理器中发生上下文切换时,存储在私有分支预测存储器中的且与要被换出的当前上下文相关联的分支预测状态从私有分支预测存储器被换出到共享分支预测存储器。共享分支预测存储器是被配置为存储多个运行进程的多个上下文的分支预测状态的一种共享结构。例如,共享分支预测存储器可以在指令处理电路外部,诸如在与处理器相关联的高速缓冲存储器或主存储器中。共享分支预测存储器中先前存储(即,换出)的且与要被换入的上下文相关联的分支预测状态在私有分支预测存储器中被恢复,以用于在与换入上下文相关联的进程的执行期间进行分支预测。另外的上下文改变再次使共享分支预测存储器中用于新换入的上下文的相关联的分支预测状态在私有分支预测存储器中被恢复,其中私有分支预测存储器中当前换出上下文的分支预测状态被存储回共享分支预测存储器中。
9.以这种方式,进程的当前上下文中的分支预测历史被保留并在上下文被换出指令处理电路并被换回以在稍后时间在其相关联的进程的执行中使用时不会丢失。私有分支预测存储器的大小可以专门用于存储当前上下文的分支预测状态,以有效地扩大分支预测器电路的大小以获取更准确的分支预测,而不是在多个不同上下文之间共享私有分支预测存储器。而且,因为共享分支预测存储器能够存储被共享的多个特定上下文的分支预测状态,所以无需在上下文切换时刷新共享分支预测存储器以避免攻击者进程泄露有关受害者进程上下文的信息。因此,例如,如果攻击者进程在私有分支预测存储器中启动分支预测状态,并且然后受害者进程随后被交换以代替攻击者进程来执行,则被启动的分支预测状态不用于受害者进程中分支指令的分支预测。攻击者进程的分支预测状态被换出到共享分支预测存储器中,而先前存储的受害者进程的分支预测状态被换入私有分支预测存储器中。因此,当攻击者进程被换回其中时,先前启动的分支预测历史在私有分支预测存储器中被恢复,而不是受害者进程的上下文分支预测历史在私有分支预测存储器中被恢复,而受害者应用不会受到与攻击者进程相关联的被启动的分支预测状态的影响。因此,攻击者进程无法通过其执行基于被启动的分支预测状态如何受到受害者进程执行的影响来检测受害者进程如何执行。
10.在这点上,在一个示例性方面,提供了一种分支预测电路。分支预测电路包括私有分支预测存储器,私有分支预测存储器被配置为存储在处理器的指令处理电路中执行的当前进程的当前上下文的至少一个分支预测状态。分支预测电路被配置为基于与在指令处理电路中执行的当前进程中的分支指令相关联的私有分支预测存储器中的当前上下文中的至少一个分支预测状态之中的分支预测状态来推测性地预测分支指令的结果。分支预测电路还被配置为接收标识被换入指令处理电路中的新上下文的进程标识符。响应于进程标识符指示与被换入指令处理电路中的当前上下文不同的新上下文,分支预测电路还被配置为使与新上下文相关联的至少一个分支预测状态被存储为私有分支预测存储器中的至少一个分支预测状态。
11.在另一示例性方面,提供了一种预测在处理器的指令处理电路中执行的上下文的分支指令的分支结果的方法。该方法包括基于与在指令处理电路中执行的当前进程中的分支指令相关联的私有分支预测存储器中的当前进程的当前上下文的至少一个分支预测状态之中的分支预测状态来推测性地预测分支指令的结果,私有分支预测存储器被配置为存
储要在处理器的指令处理电路中执行的当前进程的当前上下文的至少一个分支预测状态。该方法还包括接收标识被换入指令处理电路中的新上下文的进程标识符。该方法还包括确定进程标识符是否指示与被换入指令处理电路中的当前上下文不同的新上下文。该方法还包括响应于进程标识符指示与被换入指令处理电路中的当前上下文不同的新上下文,使与新上下文相关联的至少一个分支预测状态被存储为私有分支预测存储器中的至少一个分支预测状态。
12.在另一示例性方面,公开了一种基于处理器的系统。基于处理器的系统包括处理器。处理器包括指令处理电路,该指令处理电路包括一个或多个指令流水线,该指令流水线包括提取电路、分支预测电路和执行电路。提取电路被配置为从存储器提取多个指令到一个或多个指令流水线之中的指令流水线中以由执行电路执行。指令处理电路还包括分支预测电路,该分支预测电路包括私有分支预测存储器,该私有分支预测存储器被配置为存储要在处理器的指令处理电路中执行的当前上下文的至少一个分支预测状态。分支预测电路被配置为基于与在指令处理电路中执行的当前进程中的分支指令相关联的私有分支预测存储器中的当前上下文中的至少一个分支预测状态之中的分支预测状态来推测性地预测分支指令的结果。指令处理电路被配置为接收标识被换入指令处理电路中的新上下文的进程标识符,并且响应于进程标识符指示与被换入指令处理电路中的当前上下文不同的新上下文,使与新上下文相关联的至少一个分支预测状态被存储为私有分支预测存储器中的至少一个分支预测状态。处理器还包括共享分支预测存储器,该共享分支预测存储器被配置为存储与被配置为在指令处理电路中执行的相应进程相关联的多个上下文中的每个上下文之中的上下文相关联的至少一个分支预测状态。
13.在阅读以下与附图相关联的优选实施例的具体实施方式之后,本领域技术人员将理解本公开的范围并实现其附加方面。
附图说明
14.并入本说明书并形成本说明书的一部分的附图示出了本公开的若干方面,并且与说明书一起用于解释本公开的原理。
15.图1是示例性的基于处理器的系统的示图,该系统包括具有指令处理电路的处理器,该指令处理电路包括用于处理计算机指令以用于执行的一个或多个指令流水线,其中指令处理电路被配置为从共享分支预测存储器中检索与换入上下文相关联的分支预测状态,并且换入和恢复在私有分支预测存储器中检索到的分支预测电路的分支预测状态,以用于在与换入上下文相关联的进程的执行中进行分支预测;
16.图2是示出图1中的指令处理电路的示例性处理的流程图;
17.图3是示出分支预测存储器的示图,该分支预测存储器包括被配置为按上下文存储分支预测状态的静态分区存储器和被配置为存储当前执行进程的当前上下文的分支预测状态的非分区存储器;
18.图4是示出图1中的指令处理电路的备选示例性处理的流程图,其响应于上下文切换而将共享分支预测存储器中的与换入上下文相关联的分支预测状态部分地换入和恢复到私有分支预测存储器以用于在与换入上下文相关联的进程的执行中进行分支预测;
19.图5是包括指令处理电路的备选的示例性的基于处理器的系统的示图,该指令处
理电路被配置为响应于上下文切换而临时使用备选分支预测方案直到检索到的分支预测状态从共享分支预测存储器到私有分支预测存储器的换入和恢复以用于在与换入上下文相关联的进程的执行中进行分支预测,直到换入上下文的交换完成;
20.图6是示出图5中的指令处理电路的示例性处理的流程图;
21.图7是另一备选的示例性的基于处理器的系统的示图,该系统包括具有指令处理电路的处理器,该指令处理电路包括用于处理计算机指令以用于执行的一个或多个指令流水线,其中指令处理电路包括被配置为存储当前上下文的相应分支预测状态和可能在当前上下文之后被换入的另一下一上下文的分支预测状态的主分支预测电路和辅分支预测电路,其中指令处理电路被配置为从共享分支预测存储器中检索与下一上下文相关联的分支预测状态,并且在辅分支预测电路的私有分支预测存储器中换入和恢复检索到的分支预测状态以便准备好用于在针对当前上下文被换入时在与下一上下文相关联的进程的执行时进行分支预测;
22.图8a和图8b是示出图7中的指令处理电路的示例性处理的流程图;以及
23.图9是示例性的基于处理器的系统的框图,该系统包括具有指令处理电路的处理器,该指令处理电路包括用于预测分支指令的结果的分支预测电路,其中指令处理电路被配置为从共享分支预测存储器中检索与换入上下文相关联的分支预测状态,并且在私有分支预测存储器中换入和恢复检索到的分支预测电路的分支预测状态,以用于在换入上下文的执行中进行分支预测,包括但不限于图1、图5和图7中的指令处理电路。
具体实施方式
24.本文中所公开的方面包括在处理器中的上下文切换时交换和恢复上下文特定的分支预测器状态。上下文是在中央处理单元(cpu)的处理器中执行的应用(“进程”)的进程使用的最小数据集,该进程被保存以允许任务被中断并稍后从同一中断点处执行。上下文切换存储中断进程的上下文状态,从而使上下文状态稍后可以从同一点处被恢复并在处理器中恢复进程的执行。上下文切换允许多个进程共享单个处理器。在这点上,处理器包括指令处理电路,该指令处理电路包括多个指令处理级,该多个指令处理级被配置为根据数据流执行来流水线化所提取的指令的处理和执行。指令处理电路包括在提取级中的提取电路,提取电路被配置为从指令存储器提取要插入到指令流水线中以执行的指令。分支预测电路被配置为推测性地预测所提取的分支指令(例如,条件分支指令、间接分支指令、返回分支指令)的结果,以用于确定要由提取电路提取到指令流水线中的下一指令。分支预测电路被配置为访问分支预测状态以推测性地预测分支指令的结果。
25.在本文中所公开的示例性方面,分支预测电路包括私有分支预测存储器(例如,分支预测表电路),私有分支预测存储器被配置为存储正在执行的当前进程的上下文(“当前上下文”)的分支预测状态)以在执行期间在预测当前上下文中的分支指令的结果时使用。私有分支预测存储器仅受当前上下文影响,而不受当前未执行的其他进程的上下文影响。当处理器中发生上下文切换时,存储在私有分支预测存储器中的且与要被换出的当前上下文相关联的分支预测状态从私有分支预测存储器被换出到共享分支预测存储器。共享分支预测存储器是被配置为存储多个运行进程的多个上下文的分支预测状态的一种共享结构。例如,共享分支预测存储器可以在指令处理电路外部,诸如在与处理器相关联的高速缓冲
存储器或主存储器中。共享分支预测存储器中先前存储(即,换出)的且与要被换入的上下文相关联的分支预测状态在私有分支预测存储器中被恢复,以用于在与换入上下文相关联的进程的执行期间进行分支预测。另外的上下文改变再次使共享分支预测存储器中用于新换入的上下文的相关联的分支预测状态在私有分支预测存储器中被恢复,其中私有分支预测存储器中当前换出上下文的分支预测状态被存储回共享分支预测存储器中。
26.以这种方式,进程的当前上下文中的分支预测历史被保留并在上下文被换出指令处理电路并被换回以在稍后时间在其相关联的进程的执行中使用时不会丢失。私有分支预测存储器的大小可以专门用于存储当前上下文的分支预测状态,以有效地扩大分支预测器电路的大小以获取更准确的分支预测,而不是在多个不同上下文之间共享私有分支预测存储器。而且,因为共享分支预测存储器能够存储被共享的多个特定上下文的分支预测状态,所以无需在上下文切换时刷新共享分支预测存储器以避免攻击者进程泄露有关受害者进程上下文的信息。因此,例如,如果攻击者进程在私有分支预测存储器中启动分支预测状态,并且然后受害者进程随后被交换以代替攻击者进程来执行,则被启动的分支预测状态不用于受害者进程中分支指令的分支预测。攻击者进程的分支预测状态被换出到共享分支预测存储器中,而先前存储的受害者进程的分支预测状态被换入私有分支预测存储器中。因此,当攻击者进程被换回其中时,先前启动的分支预测历史在私有分支预测存储器中被恢复,而不是受害者进程的分支预测历史在私有分支预测存储器中被恢复,而受害者应用不会受到与攻击者进程相关联的被启动的分支预测状态的影响。因此,攻击者进程无法通过其执行基于被启动的分支预测状态如何受到受害者进程执行的影响来检测受害者进程如何执行。
27.在这点上,图1是包括处理器102的示例性的基于处理器的系统100的示图。处理器102可以是有序或无序处理器(oop)。处理器102也可以被称为“处理器核”或“中央处理单元(cpu)核”。基于处理器的系统100可以包括多个处理器102。在该示例中,处理器102包括指令处理电路104,该指令处理电路104包括用于处理由提取电路108提取的所提取的计算机指令106f以用于执行的一个或多个指令流水线i
0-in。提取电路108被配置为从指令存储器110提取指令106。作为示例,指令存储器110可以设置在基于处理器的系统100中的系统存储器中或作为其一部分。还可以在处理器102中提供指令高速缓存112以对从指令存储器110提取的指令106进行高速缓存,以减少提取电路108中的延迟。本示例中的提取电路108被配置为在提取指令106f到达要被执行的执行电路116之前,将指令106作为提取指令106f提供到一个或多个指令流水线i
0-in中作为指令处理电路104中的要被预处理的指令流114。指令流114中的所提取的指令106f包括生产者指令和消费者指令,消费者指令消费由于指令处理电路104执行生产者指令而产生的值。指令流水线i
0-in跨指令处理电路104的不同处理电路或级来提供以在执行电路116执行提取指令106f之前在可以同时执行的一系列步骤中预处理和处理提取指令106f以增加吞吐量。
28.继续参考图1,指令处理电路104包括译码电路118,该译码电路118被配置为将由提取电路108提取的提取指令106f译码成译码指令106d以确定指令类型和所需要的动作。在译码指令106d中编码的指令类型和所需要的动作也可以用于确定译码指令106d应当放置在哪个指令流水线i
0-in中。在该示例中,译码指令106d被放置在指令流水线i
0-in中的一个或多个指令流水线中并接下来被提供给指令处理电路104中的重命名电路120。重命名电
路120被配置为确定译码指令106d中是否有任何寄存器名称需要重命名以破坏会阻止并行或无序处理的任何寄存器依赖性。重命名电路120被配置为调用寄存器映射表(rmt)122以重命名逻辑源寄存器操作数和/或将译码指令106d的目的地寄存器操作数写入物理寄存器文件(prf)126中的可用物理寄存器124(1)-124(x)(p0、p1、
……
、px)。rmt 122包含多个映射条目,每个映射条目被映射到相应逻辑寄存器r
0-r
p
(即,与其相关联)。映射条目被配置为以指向物理寄存器文件(prf)126中的物理寄存器124(1)-124(x)的地址指针的形式存储信息。prf 126中的每个物理寄存器124(1)-124(x)包含被配置为存储译码指令106d的源和/或目的地寄存器操作数的数据的数据条目。
29.图1中的处理器102中的指令处理电路104还包括寄存器访问(racc)电路128。寄存器访问电路128被配置为基于映射到译码指令106d的源寄存器操作数的rmt 122中的逻辑寄存器r
0-r
p
的映射条目来访问prf 124中的物理寄存器124(1)-124(x)以从执行电路116中的执行指令106e中检索产生值。寄存器访问电路128还被配置为提供从已执行的译码指令106e中检索到的产生值作为要被执行的译码指令106d的源寄存器操作数。而且,在指令处理电路104中,调度器电路130设置在指令流水线i
0-in中并被配置为将译码指令106d存储在保留条目中,直到译码指令106d的所有源寄存器操作数可用。例如,调度器电路130负责确定译码消费者指令106d的操作数的必要值在在“k”个发布通道之中的发布通道l
0-l
k-1
中向执行电路116发布译码消费者指令106d以执行之前可用。调度器电路130向执行电路116发布准备好执行的译码指令106d。在指令处理电路104中还设置有写入电路132以将产生值从执行指令106e写回或提交到存储器,诸如prf 126、高速缓冲存储器或系统存储器。
30.继续参考图1,指令处理电路104还包括分支预测电路134。分支预测电路134被配置为推测性地预测提取分支指令106f的结果,提取分支指令106f控制指令流114的指令控制流路径中的所采用的路径还是非采用的路径被提取到指令流水线i
0-in中以用于执行。例如,分支指令106f可以是条件分支指令,该条件分支指令包括要由指令处理电路104解析以确定应当采用指令流114中的哪个控制流路径的条件。以这种方式,在指令处理电路104可以继续处理提取指令106f之前,提取分支指令106f的结果(在该示例中作为条件分支指令)不必在执行电路116的执行中被解决。由分支预测电路134做出的预测可以作为预测信息135由提取电路108提供,以用于提取电路108用来确定要提取以作为提取指令106f的下一指令106。可以提取的分支指令106f的其他示例包括间接分支指令和返回分支指令。在该示例中,分支预测电路134基于存储在私有分支预测存储器136中的分支预测状态对分支指令106f进行推测性预测。如下文将更详细讨论的,私有分支预测存储器136仅受指令处理电路104中正在执行的当前进程的上下文影响,而不受当前未执行的其他进程的上下文影响。
31.私有分支预测存储器136被配置为存储分支预测状态138(0)-138(b),分支预测状态138(0)-138(b)在该示例中是“b 1”分支预测状态。例如,私有分支预测存储器136可以是分支预测表电路140,分支预测表电路140包含被配置为存储对应的分支预测状态138(0)-138(b)的多个可索引条目141(0)-141(b)。分支预测电路134被配置为基于从私有分支预测存储器136中检索的分支预测状态138(0)-138(b)来推测性地预测提取分支指令106f的结果,以确定将由提取电路108提取到指令流水线i
0-in中的下一指令106。例如,如果分支预测电路134对分支指令106f的结果的预测是分支指令106f将解析为所采用的指令流路径,则分支预测电路134可以将该预测信息135提供给提取电路108以使提取电路108将指令106从
所采用的指令流路径提取到(多个)指令流水线i
0-in中。然而,如果分支预测电路134做出的预测是分支指令106f将解析为所采用的指令流路径,则分支预测电路134也可以将该预测信息135提供给提取电路108以使提取电路108将指令106从所采用的指令流路径提取到(多个)指令流水线i
0-in中。如果一旦在执行电路116中执行分支指令106f以解决条件则确定预测是错误预测,则从不正确的指令流路径提取到指令处理电路104的指令106可以被刷新,并且来自正确的指令流路径的指令106可以被提取。
32.作为示例,分支预测状态138(0)-138(b)可以包括使用逻辑状态“0”来表示未采用的分支状态并使用逻辑状态“1”来表示所采用的分支状态的比特。分支预测表电路134可以被配置为将静态状态存储为分支预测表电路140中的分支预测状态138(0)-138(b),分支预测状态138(0)-138(b)不会基于指令106f的执行而动态改变。备选地,分支预测电路134可以被配置为基于指令106f的执行的历史来更新分支预测电路140中的分支预测状态138(0)-138(b)。例如,可以基于在执行电路116中执行的分支指令106f的解析条件的历史来更新分支预测状态138(0)-138(b)。因此,更大数目的分支预测状态138(0)-138(b)允许存储有关分支指令的更具体的历史信息,从而提高分支预测的精度。
33.图1中的处理器102可以是多任务处理器,该多任务处理器能够换入和换出要在指令处理电路104中执行的运行进程(例如,线程)。上下文信息(被称为“上下文”)是指令处理电路104在进程执行期间使用和更新的信息。例如,上下文可以包括存储在rmt122和/或prf 126中的数据、标志的状态、和当进程在指令处理电路104中执行时存储在分支预测表电路140中的分支预测状态138(0)-138(b)。处理器102中的上下文是在处理器102中执行的进程使用的最小数据集,其被保存以允许任务被中断,并且稍后从同一中断点执行。因此,当新的下一进程被换入指令处理电路104以代替当前执行进程被执行时,由处理器102执行上下文切换。上下文切换允许多个进程共享处理器102。上下文切换是处理器存储中断的当前进程的上下文,该进程要从指令处理电路104中被换出以支持新的下一进程,从而使可以从同一中断点恢复上下文并在处理器102中恢复先前当前进程的执行。因此,上下文切换涉及恢复被换入指令处理电路104的下一进程的上下文以执行以及交换下一进程本身。
34.在图1中的处理器102的这个示例中,希望将分支预测电路134的私有分支预测存储器136的大小设置为存储期望数目的分支预测状态138(0)-138(b)以提供期望水平的预测精度,但是在处理器102的设计和性能约束范围内。例如,处理器102可能受到循环次数和面积约束的约束,这些约束可能会限制分支预测电路134中的私有分支预测存储器136的大小。一种扩大私有分支预测存储器136的存储器大小以提高分支预测精度而不必增加分支预测电路134中的存储的方法是分配附加存储器用于在单独的共享存储器中存储分支预测状态。在这点上,如图1所示,基于处理器的系统100包括共享分支预测存储器142。在该示例中,共享分支预测存储器142位于分支预测电路134外部,从而不消耗分支预测电路134和/或其私有分支预测存储器136中的面积。共享分支预测存储器142可以设置在指令处理电路104外部。例如,共享分支预测存储器142可以设置在高速缓冲存储器中,包括但不限于在处理器102内部(例如,l1高速缓存)、在处理器102外部的高速缓存(例如,l3高速缓存)、或者基于处理器的系统100的主存储器(例如,双倍数据速率随机存取存储器(ram)(ddram))。共享分支预测存储器142的大小被设置为存储已在处理器102中执行并可以被换入指令处理电路104中以进一步执行的不同进程的多个上下文144(0)-144(c)。每个上下文144(0)-144
(c)被配置为在对应的多个条目148中存储多个分支预测状态146(0)(0)-146(c)(b),其中对于私有分支预测存储器136中的分支预测状态138(0)-138(b)的容量,“s”可以等于“b”。
35.在该示例中,指令处理电路104接收进程标识(id)150,该进程id 150标识在进程交换发生时换入指令处理电路104中以用于执行的新进程的新上下文。作为示例,通过进程id 150标识要被换入指令处理电路104中的下一上下文,进程id 150标识可以与其上下文相关联的进程,或者进程id 150可以用于标识上下文。例如,在处理器102中执行的操作系统(os)可以控制进程交换并使进程id150被生成。如果进程id与当前在指令处理电路104中执行的进程不同,则进程id 150指示进程交换。在该示例中,当响应于进程id150指示与在指令处理电路104中执行的当前进程不同的新换入进程时在处理器102中发生上下文切换时,指令处理电路104被配置为将共享分支预测存储器142中的与要被执行的换入进程相关联的上下文的分支预测状态146()(0)-146()(b)换入到私有分支预测存储器136。类似地,为了将当前分支预测状态138(0)-138(b)保存在私有分支预测存储器136中以用于换出进程,指令处理电路104被配置为首先将私有分支预测存储器136中的分支预测状态138(0)-138(b)换出到共享分支预测存储器142中的其保留的上下文144(0)-144(c)。以这种方式,分支预测电路134将使用恢复的分支条件状态146()(0)-146()(b)用于被换入以执行的新进程以推测性地预测分支指令106f。然而,换出进程的先前分支条件状态138(0)-138(b)不会丢失,而是存储在共享分支预测存储器142中的其保留上下文144(0)-144(c)中。如果换出进程再次换入指令处理电路104,则先前换出进程的所存储的分支条件状态146()(0)-146()(b)可以作为当前分支预测状态138(0)-138(b)换回私有分支预测存储器136中以由分支预测电路134在其执行中使用。这与刷新私有分支预测存储器136中的分支预测状态138(0)-138(b)相反,刷新私有分支预测存储器136中的分支预测状态138(0)-138(b)将删除换入上下文的分支预测历史并导致分支预测电路134通过更新刷新的私有分支预测存储器136来重新训练换入进程的分支预测。
36.以这种方式,私有分支预测存储器136的大小可以专门用于存储当前执行进程的当前上下文的分支预测状态138(0)-138(b),从而有效地扩大分支预测器电路134的大小以用于更准确的分支预测,而不是在多个不同上下文之间共享私有分支预测存储器136。而且,因为共享分支预测存储器142能够为共享的多个特定上下文144(0)-144(c)存储分支预测状态146(0)(0)-146(c)(b),所以在上下文切换时刷新共享分支预测存储器142对于避免攻击者进程泄露关于受害者进程的信息不是必需的。因此,例如,如果攻击者进程启动私有分支预测存储器136中的分支预测状态138(0)-138(b),并且然后受害者进程随后被换入指令处理电路104中代替攻击者进程来执行,则启动的分支预测状态138(0)-138(b)不用于受害者进程中分支指令的分支预测。攻击者进程的分支预测状态138(0)-138(b)被换出到共享分支预测存储器142中,并且受害者进程的特定上下文144(0)-144(c)的先前存储的分支预测状态146(0)(0)-146(c)(b)被换回私有分支预测存储器136中。因此,当攻击者进程被换回其中时,先前启动的分支预测历史138(0)-138(b)在私有分支预测存储器136中被恢复以代替受害者进程的分支预测状态,而受害者进程没有受到与攻击者进程相关联的启动的分支预测状态138(0)-138(b)的影响。因此,攻击者进程无法通过其执行基于其被启动的分支预测状态138(0)-138(b)如何受到受害者进程执行的影响来检测受害者进程如何执行。
37.图2是示出图1中的指令处理电路104中的分支预测电路134的示例性过程200的流
程图,该过程被配置为在上下文中从共享分支预测存储器142换入私有分支预测存储器136,而不是将上下文从私有分支预测存储器136换出到共享分支预测存储器142。下面结合图1中的指令处理电路104来讨论图2中的这个过程200。在这点上,分支预测电路134推测性地预测在指令处理电路104中执行的当前进程中的分支指令106f的结果(图2中的框202)。推测性预测基于私有分支预测存储器136中的与在指令处理电路104中执行的当前进程的分支指令106f相关联的上下文的所访问的相关联的分支预测状态138(0)-138(b)(图2中的框202)。如前所述,私有分支预测存储器136被配置为存储在处理器102的指令处理电路104中执行的当前进程的当前上下文的分支预测状态138(0)-138(b)。
38.继续参考图2,分支预测电路134接收进程id 150,该进程id 150标识被换入或将被换入指令处理电路104中的新上下文,表示上下文切换(图2中的框204)。分支预测电路134确定进程id 150是否指示与被换入指令处理电路104中的当前上下文不同的新上下文(图2中的框206)。响应于进程id 150指示与被换入指令处理电路104中的当前上下文不同的新上下文(图2中的框208),分支预测电路134使与新上下文144(0)-144(c)相关联的分支预测状态146()(0)-146()(b)被存储在私有分支预测存储器136中的分支预测状态138(0)-138(b)中(框210)。而且,响应于进程id 150指示与被换入指令处理电路104的当前上下文不同的新上下文,分支预测电路134使私有分支预测存储器136中的要被换出的上下文的分支预测状态138(0)-138(b)被存储为共享分支预测存储器142中的其上下文144(0)-144(c)的分支预测状态146()(0)-146()(b)(图2中的框212)。
39.以这种方式,如上所述,分支预测电路134能够访问私有分支预测存储器136中的分支预测状态138(0)-138(b)以用于当前执行进程的上下文而不必重新训练进程的分支预测状态。而且,共享分支预测存储器142不必在上下文切换之后被刷新,因为共享分支预测存储器142的大小被设置为存储特定不同上下文的分支预测状态146(0)(0)-146(c)(b),从而使进程无法影响另一进程的上下文和相关分支预测状态。图3是示出用于存储分支预测状态的分支预测存储器302的示图,该分支预测状态将由分支预测电路300用于分支预测以用于比较目的。分支预测存储器302划分为两类存储器——静态分区分支预测存储器304和动态分支预测存储器306。静态分区分支预测存储器304可以是分支预测电路300的本地存储器,而动态分支预测存储器306可以存储在单独的存储器中。静态分区分支预测存储器304包括一个或多个分支预测表307(0)-307(t),该分支预测表307(0)-307(t)被分区成存储器段308(1)-308(x),从而使在运行进程的上下文之间存在隔离以出于安全原因而避免一个进程影响另一进程的上下文,如上所述。动态分支预测存储器306包括一个或多个分支预测表310(0)-310(t),该分支预测表310(0)-310(t)没有被分区并可以用于存储和更新当前执行进程的预测状态以与静态分区分支预测存储器304相比提供附加分支预测状态容量。然而,动态分支预测存储器306没有被分区并在上下文切换时被刷新以防止泄漏。静态分区分支预测存储器304通过按上下文分区来防止泄漏,但是它是容量较小的存储器结构,可以在不使用动态分支预测存储器306的情况下降低预测精度。然而,动态分支预测存储器306在上下文切换时被刷新导致换出进程的上下文的分支预测训练(即,历史)丢失。
40.再次参考图1,指令处理电路104和分支预测电路134可以被配置为响应于上下文切换而将私有分支预测存储器136中的分支预测状态138(0)-138(b)中的每个分支预测状态换出到共享分支预测存储器142,并且在做出关于分支指令106f的推测性预测之前,将共
享分支预测存储器142中换入上下文的分支预测状态146()(0)-146()(b)中的每个分支预测状态换入到私有分支预测存储器136中。然而,这可能会延迟指令处理,因为在为与上下文相关联的进程提取分支指令106f之前,新上下文到私有分支预测存储器136中的换入过程可能未完成。在这点上,可以采用“惰性”交换过程,以能够在新上下文的换入完成之前推测性地预测分支指令106f的结果,以便不延迟对可能跟随上下文切换的分支指令106f的处理。
41.例如,图4是示出从共享分支预测存储器142部分换入和恢复私有分支预测存储器136中的分支预测状态138(0)-138(b)的备选示例性过程400的流程图,但是分支预测电路134仍然能够基于分支预测状态138(0)-138(b)的部分恢复来进行分支预测。图4中的过程400可以遵循例如图2中的过程200,并且在图2中的框210和212中的交换分支预测状态的过程已发起之后开始。在这点上,如图4所示,分支预测电路134被配置为确定共享分支预测存储器142中换入上下文的分支预测状态146()(0)-146()(b)到私有分支预测存储器136中换入和存储是否完成(图4中的框402)。响应于确定分支预测状态146()(0)-146()(b)从共享分支预测存储器142到私有分支预测存储器136中的存储未完成(图4中的框404),分支预测电路134仍被配置为基于备选分支预测状态来推测性地预测在指令处理电路104中执行的当前进程中的换入分支指令106f的结果(图4中的框406)。例如,分支预测电路134可以被配置为在分支预测状态146()(0)-146()(b)从共享分支预测存储器142到私有分支预测存储器136中的存储完成之前,基于静态分支预测状态,诸如总是采用或不采用,推测性地预测在指令处理电路104中执行的当前换入进程中的提取分支指令106f的结果。
42.然而,如果响应于确定分支预测状态146()(0)-146()(b)从共享分支预测存储器142到私有分支预测存储器136中的存储完成(图4中的框408),分支预测电路134可以被配置为使用作为分支预测状态138(0)-138(b)存储在私有分支预测存储器136中的来自共享分支预测存储器142的分支预测状态146()(0)-146()(b)来推测性地预测在指令处理电路104中执行的当前换入进程中的分支指令106f的结果,如前所述(图4中的框410)。
43.替代图4中的框404和406,另一“惰性”交换方法涉及分支预测电路134仅存储私有分支预测存储器136中的与分支预测状态138(0)-138(b)中的新上下文144(0)-144(c)相关联的预测状态146()(0)-146()(b)的中的所有预测状态的子集或一部分,而不完全存储私有分支预测存储器136的所有分支预测状态146()(0)-146()(b)。而且,分支预测电路134可以被配置为仅存储共享分支预测存储器142中与当前上下文相关联的预测状态138(0)-138(b)中的所有预测状态的子集或一部分。这允许分支预测电路134推测性地预测分支指令106f的结果,而不必换入和换出当前和新上下文的所有分支预测状态。分支预测电路134可以被配置为换入私有分支预测存储器136中更可能提供分支指令106f的准确分支预测的分支预测状态146()(0)-146()(b)。
44.备选地,分支预测电路134可以被配置为在分支预测状态146()(0)-146()(b)从共享分支预测存储器142到私有分支预测存储器136中的存储完成之前基于单独的专用共享分支预测存储器中的分支预测状态来推测性地预测在指令处理电路104中执行的当前换入进程中的分支指令106f的结果。这在图5中的基于处理器的系统500中通过示例示出。图5中的基于处理器的系统500包括与图1中的基于处理器的系统100中相同的处理器102。图1中的基于处理器的系统100与图5中的基于处理器的系统500之间的相同组件以共同的元素
编号示出。以上关于图1对这些元素的先前解释适用于图5并将不再描述。
45.如图5所示,基于处理器的系统500包括与图1中的共享分支预测存储器142类似的共享分支预测存储器542。共享分支预测存储器542的大小被设置为存储已在处理器102中执行并可以被换入指令处理电路104中以进一步执行的不同进程的多个上下文544(0)-544(c)。针对私有分支预测存储器136中的分支预测状态138(0)-138的容量(b),每个上下文544(0)-544(c)被配置为在对应的多个条目148中存储多个分支预测状态546(0)-546(b)。共享分支预测存储器542还包括专用分支预测存储器502,专用分支预测存储器502被配置为将单个上下文544的多个分支预测状态546(0)-546(b)存储在相应条目548(0)-548(b)中。在该示例中,专用分支预测存储器502中的条目548(0)-548(b)的大小“s”与共享分支预测存储器542中的单个上下文544(0)-544(c)中的条目的数目相同。因此,分支预测器电路134可以访问专用分支预测存储器502中的分支预测状态546(0)-546(b)对分支指令106f的结果进行推测性预测,直到分支预测状态546()(0)从共享分支预测存储器542到私有分支预测存储器136的-546()(b)中的换入完成。
46.图6是示出图1中的指令处理电路104中的分支预测电路134的示例性过程600的流程图,该过程被配置为在上下文中从共享分支预测存储器542换入私有分支预测存储器136,而标识将上下文从私有分支预测存储器136换出到共享分支预测存储器542,并且使用专用分支预测存储器502中的预测状态546(0)-546(b)进行预测,直到换入进程完成。下面结合图5中的指令处理电路104来讨论图6中的这个过程600。在这点上,分支预测电路134推测性地预测在指令处理电路104中执行的当前进程中的提取分支指令106f的结果(图6中的框602)。推测性预测可以基于私有分支预测存储器136中与在指令处理电路104中执行的当前进程的提取的分支指令106f相关联的上下文的所访问的相关联的分支预测状态138(0)-138(b)(图6中的框602)。如前所述,私有分支预测存储器136被配置为存储在处理器102的指令处理电路104中执行的当前进程的当前上下文的分支预测状态138(0)-138(b)。
47.继续参考图6,分支预测电路134接收进程id 150,该进程id 150标识被换入或将被换入指令处理电路104中的新上下文,表示上下文切换(图6中的框604)。分支预测电路134确定进程id 150是否指示与被换入指令处理电路104中的当前上下文不同的新上下文(图6中的框606)。响应于进程id 150指示与被换入指令处理电路104中的当前上下文不同的新上下文(图6中的框608),分支预测电路134使与新上下文544(0)-544(c)相关联的分支预测状态546()(0)-546()(b)被存储在私有分支预测存储器136中的分支预测状态138(0)-138(b)中(图6中的框610)。而且,响应于进程id 150指示与被换入指令处理电路104的当前上下文不同的新上下文,分支预测电路134使私有分支预测存储器136中的要被换出的当前上下文的分支预测状态138(0)-138(b)被存储为共享分支预测存储器542中的其上下文544(0)-544(c)的分支预测状态546()(0)-546()(b)(图6中的框612)。
48.继续参考图6,分支预测电路134被配置为确定共享分支预测存储器542中换入上下文的分支预测状态546()(0)-546()(b)到私有分支预测存储器136中换入和存储是否完成(图6中的框614)。响应于确定分支预测状态546()(0)-546()(b)从共享分支预测存储器542到私有分支预测存储器136中的存储未完成(图6中的框616),分支预测电路134仍被配置为基于专用分支预测存储器502中与分支指令106f相关联的分支预测状态546(0)-546(b)来推测性地预测在指令处理电路104中执行的当前换入进程中的分支指令106f的结果
(图6中的框618)。然而,响应于确定分支预测状态546()(0)-546()(b)从共享分支预测存储器542到私有分支预测存储器136中的存储完成(图6中的框620),分支预测电路134可以被配置为使用作为分支预测状态138(0)-138(b)存储在私有分支预测存储器136中的来自共享分支预测存储器542的分支预测状态546()(0)-546()(b)来推测性地预测在指令处理电路104中执行的当前换入进程中的分支指令106f的结果,如前所述(图6中的框622)。
49.图7中示出了分支预测电路的另一备选方案,该分支预测电路响应于上下文切换基于到私有分支预测存储器中的换入分支条件状态推测性地预测分支指令106f的结果。图7示出了基于处理器的系统700,基于处理器的系统700包括类似于图1中基于处理器的系统100中的处理器102和指令处理电路104的处理器702和指令处理电路704。图1中的基于处理器的系统100与图7中的基于处理器的系统700之间的相同组件以共同的元素编号示出。以上关于图1对这些元素的先前解释适用于图7并将不再描述。
50.在图7中的基于处理器的系统700中,指令处理电路704包括两(2)个相同的分支预测电路,该分支预测电路可以是来自图1中的指令处理电路104的分支预测电路134、和第二分支预测电路734。如下文将更详细讨论的,一个分支预测电路134、734被配置为保持正在执行的当前进程的当前上下文的分支预测状态138(0)-138(b)、738(0)-738(b),而另一分支预测电路734、134被配置为保持更可能被换入指令处理电路704中以执行的下一进程的下一上下文的分支预测状态738(0)-738(b)、138(0)-138(b)。以这种方式,当上下文切换发生时,如果标识要交换的进程的进程id 150与当前存储在第二分支预测电路734、134中的上下文相关联,则第二分支预测电路734、134可以接管进行指令处理电路704中的推测性预测而没有延迟。可以禁用第一分支预测电路134、734,并且可以将被预测为接下来更可能被交换的进程的新上下文加载到其条目140(0)-140(b)、740(0)-740(b)中作为其分支预测状态138(0)-138(b)、738(0)-738(b)。第一分支预测电路134中的分支预测状态138(0)-138(b)可以被换出到共享分支预测存储器142中,并且与被预测为被换入到指令处理电路104中的新进程相关联的新上下文接下来可以从共享分支预测存储器142换入分支预测存储器136中,如前所述。然而,当上下文切换发生并标识要交换的进程的进程id 150与当前存储在第二分支预测电路734、134中的上下文不相关联时,第二分支预测电路734、134中的分支预测状态138(0)-138(b)、738(0)-738(b)可以被刷新,并且存储在共享分支预测存储器142中的新上下文的分支预测状态144()(0)-144()(b)可以被换入第一分支预测电路134、734中,包括根据先前描述的技术中的任何技术。
51.图8a和图8b是示出图7中的指令处理电路704的示例性过程800的流程图,指令处理电路704包括两个分支预测电路134、734并被配置为在分支预测电路134、734之间切换以推测性地预测分支指令106f的结果。在这点上,假定分支预测电路134被设置为在指令处理电路704中执行推测性预测,则分支预测电路134推测性地预测在指令处理电路104中执行的当前进程中的提取分支指令106f的结果(图8a中的框802)。推测性预测可以基于私有分支预测存储器136中与在指令处理电路104中执行的当前进程的提取的分支指令106f相关联的上下文的所访问的相关联的分支预测状态138(0)-138(b)(图8a中的框802)。如前所述,第一私有分支预测存储器136被配置为存储在处理器102的指令处理电路104中执行的当前进程的当前上下文的分支预测状态138(0)-138(b)。
52.继续参考图8a,指令处理电路704接收进程id 150,该进程id150标识被换入或将
被换入指令处理电路104中的新上下文,表示上下文切换(图8a中的框804)。指令处理电路704确定进程id 150是否指示与被换入指令处理电路104中的当前上下文不同的新上下文(图8a中的框806)。响应于进程id 150指示与被换入指令处理电路104中的当前上下文不同的新上下文(图8a中的框808),指令处理电路704还被配置为确定新上下文是否与存储在第二分支预测电路734的第二私有分支预测存储器736中的分支预测状态738(0)-738(b)相关联(图8a中的框810)。如果是,则指令处理电路704被配置为从第一分支预测电路134切换到第二分支预测电路734以使第二分支预测电路734基于与在指令处理电路704中执行的下一进程中的分支指令106f相关联的第二私有分支预测存储器736中的下一上下文中的分支预测状态738(0)-738(b)来推测性地预测分支指令106f的结果(图8a中的框812)。因此,第二私有分支预测存储器736可以开始推测性地预测下一进程的分支指令106f的结果,而不必等待下一上下文的分支预测状态被换入其第二私有分支预测存储器736中。而且,如果新上下文与存储在第二分支预测电路的第二私有分支预测存储器736中的分支预测状态738(0)-738(b)相关联(图8a中的框810),则分支预测电路134还被配置为停止推测性地预测在指令处理电路104中执行的下一进程中的分支指令106f的结果(图8b中的框814)。指令处理电路704还被配置为将分支预测存储器136中的分支预测状态138(0)-138(b)换出到共享分支预测存储器142中的当前上下文144(0)-144(c)的分支预测状态146(0)-146(b),如前所述(图8b中的框816)。指令处理电路704还被进一步配置为将共享分支预测存储器142中的接下来要被换入指令处理电路704中的下一推测上下文的上下文144(0)-144(c)的分支预测状态146(0)-146(b)换入到私有分支预测存储器136(图8b中的框818)。
53.然而,如果新上下文与存储在第二分支预测电路734的第二私有分支预测存储器736中的分支预测状态738(0)-738(b)不相关联(图8a中的框810),则指令处理电路704被配置为刷新第二私有分支预测存储器736中与下一上下文相关联的分支预测状态738(0)-738(b)(图8b中的框820)。这从而使要被换入的下一推测上下文144(0)-144(c)的分支预测状态146(0)-146(b)可以被加载到第二私有分支预测存储器736中。分支预测电路134将继续推测性地预测被换入指令处理电路704中的新进程的分支指令106f的结果(图8b中的框822)。指令处理电路704被配置为将私有分支预测存储器136中的分支预测状态738(0)-738(b)换出到共享分支预测存储器142,如前所述(图8b中的框816)。指令处理电路704还被进一步配置为将共享分支预测存储器142中换入指令处理电路704中的新上下文的上下文144(0)-144(c)的分支预测状态146(0)-146(b)中换入到私有分支预测存储器136(图8b中的框818)。
54.注意,上面所讨论的关于将上下文从私有分支预测存储器136、736换出到共享分支预测存储器142、542、742以及将上下文从共享分支预测存储器142、542、742换入到私有分支预测存储器136、736的操作中的任何操作可以在指令处理电路104和/或(多个)处理器102、702内的其他地方执行。
55.图9是示例性的基于处理器的系统900的框图,基于处理器的系统900包括处理器902(例如,微处理器),处理器902包括指令处理电路904。指令处理电路904可以是图1、图5和图7中的处理器102中的指令处理电路104中的任何指令处理电路,作为示例,并且包括分支预测电路906,分支预测电路906被配置为推测性地预测要被执行的分支指令的结果,并且包括被配置为存储被访问以做出这样的预测的分支预测状态的私有分支预测存储器。基
于处理器的系统900可以是图1、图5和图7中的基于处理器的系统100、500和700中的任何基于处理器的系统,作为示例,并且可以包括共享分支预测存储器,共享分支预测存储器用于响应于处理器902中的上下文切换而换入和换出上下文,包括图1、图5和图7中的共享分支预测存储器142、542和742,作为示例。基于处理器的系统900可以是被包括在电子板卡中的一个或多个电路,诸如印刷电路板(pcb)、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(pda)、计算板、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在该示例中,基于处理器的系统900包括处理器902。处理器902表示一个或多个通用处理电路,诸如微处理器、中央处理单元等。更具体地,处理器902可以是edge指令集微处理器、或者实现指令集的其他处理器,该指令集支持明确的消费者命名,以用于传送由生产者指令的执行产生的生产值。处理器902被配置为执行指令中的处理逻辑以执行本文中讨论的操作和步骤。在该示例中,处理器902包括用于指令处理电路904可访问的指令的临时快速访问存储器存储的指令高速缓存908。从存储器(诸如,通过系统总线912从系统存储器910)中取回或预取的指令存储在指令高速缓存908中。指令处理电路904被配置为处理取回指令高速缓存908中的指令并处理指令以用于执行。系统存储器910可以包括共享分支预测存储器911,诸如图1、图5和图7中的共享分支预测存储器142、542和742,作为示例。
56.处理器902和系统存储器910被耦接到系统总线912并可以相互耦接被包括在基于处理器的系统900中的外围设备。众所周知,处理器900通过经由系统总线912交换地址、控制和数据信息来与这些其他设备通信。例如,处理器902可以将总线事务请求传送到作为从设备的示例的主存储器910中的存储器控制器914。尽管图9中未示出,但是可以提供多个系统总线912,其中每个系统总线构成不同结构。在该示例中,存储器控制器914被配置为向系统存储器910中的存储器阵列916提供存储器访问请求。存储器阵列916包括用于存储数据的存储比特单元阵列。系统存储器910可以是只读存储器(rom)、闪存、动态随机存取存储器(dram)(诸如,同步dram(sdram)等)、以及静态存储器(例如,闪存、静态随机存取存储器(sram)等),作为非限制性示例。
57.其他设备可以连接到系统总线912。如图9所示,例如,这些设备可以包括系统存储器910、一个或多个输入设备918、一个或多个输出设备920、调制解调器922、以及一个或多个显示控制器924。(多个)输入设备918可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备920可以包括任何类型的输出设备,包括但不限于不限于音频、视频、其他视觉指示器等。调制解调器922可以是被配置为允许与网络926交换数据的任何设备。网络926可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(lan)、无线局域网(wlan)、广域网(wan)、bluetooth
tm
络和互联网。调制解调器922可以被配置为支持期望的任何类型的通信协议。处理器902还可以被配置为通过系统总线912访问(多个)显示控制器924以控制发送到一个或多个显示器928的信息。(多个)显示器928可以包括任何类型的显示器,包括但不限于阴极射线管(crt)、液晶显示器(lcd)、等离子显示器等。
58.图9中的基于处理器的系统900可以包括指令集930,该指令集930将由处理器902针对根据指令而期望的任何应用来执行。指令930可以存储在系统存储器910、处理器902和/或指令高速缓存908(作为非暂态计算机可读介质932的示例)中。指令930也可以在其执行期间完全或至少部分驻留在系统存储器910内和/或在处理器902内。指令930还可以经由
调制解调器922通过网络926来传输或接收,使得网络926包括计算机可读介质932。
59.虽然计算机可读介质932在示例性实施例中被示出为单个介质,但是术语“计算机可读介质”应当被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读介质”也应被理解为包括能够存储、编码或携带由处理设备执行的指令集并使处理设备执行本文中所公开的实施例的任何一种或多种方法的任何介质。因此,术语“计算机可读介质”应被理解为包括但不限于固态存储器、光学介质和磁介质。
60.本文中所公开的实施例包括各种步骤。本文中所公开的实施例的步骤可以由硬件组件构成,也可以以机器可执行指令具体实施,该机器可执行指令可以用于使使用指令编程的通用或专用处理器执行这些步骤。备选地,这些步骤可以通过硬件和软件的组合来执行。
61.本文中所公开的实施例可以被提供作为计算机程序产品或软件,该计算机程序产品或软件可以包括其上存储有指令的机器可读介质(或计算机可读介质),该指令可以用于将计算机系统(或其他电子设备)编程为执行根据本文中所公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,rom、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存设备等)等。
62.除非另外特别说明并通过先前讨论而清楚明白的,否则应当理解,在整个说明书中,使用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该动作和过程将在计算机系统的寄存器内表示为物理(电子)量的数据和存储器操纵和变换为在计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内类似地表示为物理量的其他数据。
63.本文中所呈现的算法和显示与任何特定计算机或其他设备没有固有的相关性。各种系统可以根据本文中的教导与程序一起使用,或者可以证明构造更专门的装置来执行所需要的方法步骤是方便的。各种这些系统所需要的结构将从上面的描述中很清楚。另外,本文中所描述的实施例没有参考任何特定编程语言来描述。应当理解,可以使用多种编程语言来实现本文中所描述的实施例的教导。
64.本领域技术人员将进一步理解,结合本文中所公开的实施例而描述的各种说明性逻辑框、模块、电路和算法可以被实现为电子硬件、存储在存储器或另一计算机可读介质中的且由处理器或其他处理设备执行的指令、或者这两者的组合。作为示例,本文中所描述的分布式天线系统的组件可以在任何电路、硬件组件、集成电路(ic)或ic芯片中采用。本文中所公开的存储器可以是任何类型和大小的存储器并可以被配置为存储任何类型的期望信息。为了清楚地说明这种可互换性,各种说明性组件、框、模块、电路和步骤已在上面大体上根据它们的功能进行了描述。如何实现这样的功能依赖于特定应用、设计选择和/或强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决定不应当被解释为导致偏离本实施例的范围。
65.结合本文中所公开的实施例描述的各种说明性逻辑框、模块和电路可以用被设计为执行本文中所描述的功能的处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或
者其任何组合来实现或执行。此外,控制器可以是处理器。处理器可以是微处理器,但是在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp核结合、或者任何其他这样的配置)。
66.本文中所公开的实施例可以在硬件中并以存储在硬件中的指令具体实施,并且可以驻留在例如ram、闪存、rom、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可移动磁盘、cd-rom或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质耦接到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。备选地,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在asic中。asic可以驻留在远程站中。在备选方案中,处理器和存储介质可以作为分立组件驻留在远程站、基站或服务器中。
67.还应当注意,在本文中的示例性实施例中的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以不同于所示出的序列的很多不同序列来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中执行。此外,在示例性实施例中讨论的一个或多个操作步骤可以组合。本领域技术人员还将理解,信息和信号可以使用多种工艺和技术中的任何工艺和技术来表示。例如,在以上描述中可以作为参考的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子、或者其任何组合表示。
68.除非另有明确说明,否则绝不旨在将本文中所阐述的任何方法解释为要求其步骤以特定顺序执行。因此,如果方法权利要求实际上没有叙述其步骤所遵循的顺序,或者在权利要求或说明书中没有另外具体说明这些步骤限于特定顺序,则绝不表示可以推断任何特定顺序。
69.本领域技术人员将清楚明白的是,在不脱离本发明的精神或范围的情况下可以进行各种修改和变化。由于本领域技术人员可以想到包含本发明的精神和实质的所公开的实施例的修改、组合、子组合和变化,因此本发明应当被解释为包括在所附权利要求及其等同物的范围内的所有内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献