双层多线程结构中为优化性能实现 线程替换的方法和装置 【技术领域】
本发明一般地涉及数据处理领域,特别涉及在双层多线程结构中为最优性能而实现线程替换的方法和装置。与本发明同日提交了由Harold F.Kossman,和Timothy John Mullins转让给本受让人、序号为__、题为“METHOD AND APPARATUS FOR IMPLEMENTING TWO-TIEREDTHREAD STATE MULTITHREADING SUPPORT WITH HIGH CLOCK RATE(以高时钟频率实现双层线程状态多线程支持的方法和装置)”的相关美国专利申请。
背景技术
通过将处理任务划分为被称为线程的独立可执行的指令序列,改善CPU内硬件的效率。当CPU因任何原因而不能继续这些线程中的一个的处理或执行时,CPU迅速地切换到并执行另一个线程。多线程是改善计算机系统或系统吞吐量的整体速度的有效方式。
多线程设计技术已成为使处理器性能能够随时钟频率提高的重要手段。在过去的处理器设计遇到降低性能的停止环境中,多线程通过独立并行的活动线程使得能够继续执行指令。然而,随着时钟频率继续增加,需要在硬件中支持越来越多的线程,以为处理器的执行提供连续可用的选项。
为一些线程状态准备了传统硬件多线程方案,存储在硬件寄存器组中。为获得最高的性能,这些寄存器组一般以包括芯片区、电路速度等的相对高地芯片设计成本来实现的,以取得最高的性能。
作为替换的多线程设计使用多于一层的状态存储器。例如,第一层或第一级状态存储器可以具有高芯片资源成本但是有限的线程持有容量,而第二层或第二级状态存储器可以具有附加的线程容量以支持吞吐量需要,但是访问速度较低。在第二级状态存储器中支持的线程与在第一级状态寄存器中的线程的交换是必要的,以便使线程能够有机会在处理器中运行。简单的硬件方案可以借助于诸如循环算法的直接算法来选择第二级线程。不幸的是,由于需要适当安排何时在处理器中运行线程以完全地支持机器的吞吐能力,这一般导致不是最优的整体性能。
需要一种机制,通过提供从第二级状态存储器中挑选适当的下一线程以改变第一级状态寄存器的方法,来解决非最优性能的问题。
【发明内容】
本发明的主要目的是提供用于在双层多线程结构中为了最优性能而执行线程替换的方法和装置。本发明的其它重要目的是提供实质上没有消极作用,而且克服了现有技术设备的许多缺点的用于在双层多线程结构中为了最优性能而执行线程替换的方法和装置。
简而言之,提供了一种用于在双层多线程结构中为了最优性能而执行线程替换的装置。第一层线程状态存储器存储有限数量的可运行线程寄存器状态。第二层线程存储设备存储多于有限数量的可运行线程寄存器状态的第二数量的线程状态。每个存储的线程状态包括预定选择数据。耦合在第一层线程状态存储器和第二层线程存储设备之间的可运行线程选择逻辑,使用所存储的预定选择数据,来选择性地在第一层有限数量的可运行线程寄存器状态和第二层线程存储设备之间交换线程状态。
根据本发明的特征,由可运行线程选择逻辑使用来选择性地在第一层可运行线程寄存器状态和第二层线程存储设备之间交换线程状态的所存储的预定选择数据包括特定线程历史使用数据。由可运行线程选择逻辑使用的所存储的预定选择数据包括每个特定线程的处理器周期使用效率。所存储的预定选择数据包括用于由可运行线程选择逻辑发信号通知资源缺乏状态的、自特定线程在处理器中运行以来的时间值。所存储的预定选择数据包括线程系统优先权,使可运行线程选择逻辑能够遵照系统策略并越过较低优先权的线程而选择较高优先权的线程,以移动到第一层可运行线程寄存器状态。所存储的预定选择数据包括准备运行指示符,从而在解决停止状态之前,在第二线程存储设备中维持的已停止的线程不被激活。由排列逻辑使用所存储的预定选择数据,来排列将维持在第一层可运行线程寄存器状态中的可运行线程。在当前执行的处理器状态因空闲事件而改变时,第一层可运行线程寄存器状态可供选择。
【附图说明】
从对图中所图解的本发明优选实施例的详细描述中可以最佳地理解本发明连同其上述及其它目的和优点,其中:
图1是根据优选实施例的双层多线程选择结构的方框图;
图2是图解根据优选实施例的使用所存储的预定选择数据的可运行线程选择逻辑的操作的方框图。
【具体实施方式】
下面参考附图,在图1中,展示了优选实施例的多线程选择结构,一般地用标号100表示。多线程选择结构100包括两层线程状态存储器,一般地用标号102和104表示。第一层线程状态存储器102是高速逻辑,为快速时钟频率而最优化。第一层线程状态存储器102包括有限数量的可运行寄存器状态,对应可以访问以便在处理器中执行的可运行线程。可运行寄存器状态的有限数量小于特定阈值,以避免寄存器逻辑重复数量超过特定阈值时可能发生的时钟频率的损失。第二层线程状态存储器104可任意地为中速逻辑,其以低于第一层状态存储器102的高速逻辑的速度操作。第二层线程状态存储器104提供容量以保持有关需要硬件支持的全部数量的线程的状态信息,从而实现最高性能。在当前执行处理器状态106随空闲事件而改变时,只能选择第一层可运行寄存器状态102中存储的可运行线程,以接下来运行。具有只出现在第二层104中的状态的线程不能够使用处理器,但是对可运行线程选择逻辑108的快速选择可用。
根据优选实施例的特征,通过增加与线程状态一起保存的信息,提供最优多线程性能。与该线程状态一起存储预定选择数据,该线程状态用于在第一层可运行线程寄存器状态102和第二层线程存储设备104之间选择性地交换线程状态。通过参考所保存的选择数据,可运行线程选择逻辑108可以选择适当的线程,以移动到第一层可运行寄存器状态102中的位置,以便在处理器中运行。具体说来,保持了有关处理器资源106的特定线程使用的过去历史,并使用其排列线程选择。
下面参考图2,根据优选实施例,在第二线程存储设备104中保存附加线程信息或预定选择数据200。预定选择数据200包括处理器循环使用效率。执行时频繁遇到处理器停止环境的线程导致处理器资源的使用的低效率。诸如高速缓存差错及其它长等待时间事件的事情都是低效率原因。一般希望在低效率线程之前在处理器中安排执行最高效率的线程。预定选择数据200包括:运行循环计数器202,用于了解特定线程激活期间发生的处理器循环(或指令);和长等待时间事件计数器204,用于了解正在执行的线程遇到的长等待时间事件。每周期(或每指令)的长等待时间事件的比率构成有效的度量标准。该比率越高,线程使用处理器的效率越低。具有最低的这种效率度量标准比率的线程是最值得选择以在处理器中接下来运行的线程。
预定选择数据200包括从特定线程上一次在处理器中运行起的时间206。与线程状态一起存储的时标206使得可运行线程选择逻辑108能够确定线程在处理器中已有多久未激活。如果超过阈值,则为该特定线程用信号通知资源缺乏状态,并且可以给予该特定线程以特殊优先权,以确保在处理器中运行,而不管其它要求其保持不被激活的判断标准。
预定选择数据200包括系统优先权208。系统算法经常需要设定有关在争用系统资源的情况下哪个线程将接收优惠待遇的策略。在线程状态中保持系统优先权208允许可运行线程选择逻辑108遵照这样的系统策略,并在可能将高优先权线程排除在可运行状态之外时,选择在处理器中运行高优先权线程。
预定选择数据200包括准备运行指示符210。在较高的处理器时钟频率,有许多在硬件中支持的线程,使这些线程能够在有机会启动新的执行时使用处理器。到达停止(stall)点并切换出激活执行106的线程需要在第一层可运行线程寄存器状态102或在第二层线程存储设备104中保持状态,而一旦解决了停止就再次争用运行周期。尽管这样的线程被停止并且可能只在第二层线程存储设备104中保存了状态,但是需要由可运行线程选择逻辑108将它们绕过。在其线程状态中保持准备运行指示符210,以发信号通知选择逻辑不耗费机器周期来评估该特定状态的可运行性,而是移动到其它线程上作评估。当解决了停止环境时,重置准备运行指示符210,使该线程能够再次可运行。
使用例如通过软件设置在排列选择逻辑214中的特定标准来执行线程排列212。为了顾及从来自第二层线程存储设备104的几个候选线程中选择单个线程的灵活性,给系统软件额外的机会,以使用预定选择数据200为线程状态度量标准建立评价序列。排列选择逻辑214执行选择逻辑功能,并对每个度量标准评价线程的相对排序,例如,选取整体排序最高的单个线程。例如,可以通过软件设置排列选择逻辑214,以选取具有超过阈值的最高资源缺乏时间、最高系统优先权、每周期最低长等待时间计数的准备运行线程。在没有满足当前标准的线程的情况下,则在下一次再评价中跳过最重要的选择属性。在有多个线程满足当前标准的情况下,则进行随机选择。
通过在为处理器硬件支持的线程而保存的状态中并入预定选择数据200,可运行线程选择逻辑108确定最适当的选择,以对当前激活的线程和未激活线程进行交换。随着可运行线程因停机环境而变得未激活,通过在激活的第一层可运行寄存器中用具有最优操作历史的另一选择替代该可运行线程,有效地管理处理器资源。这提供了多线程处理器的最高可能性能,避免限制当前技术状态的硬件管理方案的性能的效率降低。
尽管参考图中所示本发明优选实施例详细描述了本发明,这些细节并不用来限制如所附权利要求所要求保护的本发明的范围。