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

通过线程调解实现的线程共享资源中的软水印的制作方法

2022-06-22 20:36:47 来源:中国专利 TAG:


1.本公开涉及多线程微处理器。更具体地,本公开涉及通过多线程微处理器中的线程调解实现的线程共享资源中的软水印。


背景技术:

2.在硬件层面,多线程微处理器核心可以同时执行不同线程的硬件指令。通常,不同的线程共享资源。微处理器流水线的各种组件可以包括由多个线程竞争地共享的共享资源。这种共享资源的一些示例包括计算单元、加载队列、保留站、l1和l2高速缓存、转换后备缓冲器等。
3.微处理器中存在的并行化水平可以对微处理器核心内的共享资源施加压力。例如,两个到八个线程或更多线程可能会竞争加载队列、保留站、寄存器文件或算术逻辑单元(alu)。作为另一示例,在将加载队列中的条目发布到执行单元之前,多个线程可以等待分配所述条目。并行化水平对共享资源造成的压力会导致危害。可以采用例如循环和最近最少使用(lru)的用于共享资源的线程调解方案来缓解这种情况。
4.然而,例如循环和lru的简单线程调解方案可能不够。线程的长延迟操作,例如未命中l1和l2高速缓存的加载可能导致线程累积共享资源的不公平份额并且解除分配其份额的速度很慢。类似地,指令依赖和寄存器依赖也可能导致线程在等待满足依赖时积累共享资源的不公平份额。此类线程有时被称为“使用不佳”线程。当向线程分配的共享资源的份额比线程正在主动使用的份额大得不成比例时,可能会导致线程使用不佳。在某些处理器工作负载下,将共享资源分配给使用不佳的线程会显著降低其他线程的吞吐量。
5.本文所描述的实施方案解决这些和其他问题。
6.本节中描述的方法是可以采用的方法,但不一定是先前设想或采用的方法。因此,除非另有说明,否则不应仅由于本节中包含的内容而假设本节中描述的任何方法都符合现有技术,或者是易于理解的例程或常规方法。
附图说明
7.在附图中:
8.图1示意性地描绘根据一些可能的实现方式的示例微处理器核心,所述微处理器核心可以使用用于通过线程调解实现的线程共享资源中的软水印的技术。
9.图2是根据一些可能的实现方式的示例多线程微处理器核心的框图,所述多线程微处理器核心可以使用用于通过线程调解实现的线程共享资源中的软水印的技术。
10.图3描绘根据一些可能的实现方式的呈表格形式的线程调解决策的示例。
11.图4示出根据一些可能的实现方式的呈表格形式的软水印示例。
12.图5是根据一些可能的实现方式的软件水印过程的流程图。
具体实施方式
13.在以下描述中,出于解释的目的,阐述许多具体细节以便提供对本技术的透彻理解。然而,应明白,可以在没有这些具体细节的情况下实践本文所描述的实施方案。在其他情况下,一些结构和装置以框图形式示出,以避免不必要地模糊某些特征。
14.总体概述
15.公开在微处理器中用于通过线程调解实现的线程共享资源中的软水印的技术。在一些实施方案中,所述技术允许基于分配给共享资源中的线程的条目数和线程的静态或动态调整的分配目标来控制线程选择。在一些实施方案中,所述技术还允许在以下时间之间桥接时钟周期:在进行线程选择以使用共享资源时,以及在通过在更新线程的实际分配计数之前进行线程选择时考虑线程的预期资源分配而更新线程的实际分配计数时。通过在进行线程选择时考虑预期资源分配,在线程选择与更新线程的实际分配计数时之间存在大量时钟周期的情况下,防止资源分配的大幅振荡。
16.在一些可能的实现方式中,例如,微处理器具有共享资源。共享资源具有供多个线程使用的多个条目。微处理器还包含线程调解逻辑。线程调解逻辑确定多个线程中的每个线程的分配估计。分配估计可以是在做出线程调解决策的当前时钟周期,线程正在消耗的多个条目中的一组条目的基数的估计。所述估计可能是线程在未来时钟周期将消耗的共享资源的条目数的足够好的估计,而不会为生成更准确的估计而产生与硬件电路系统相关联的额外复杂性和成本。
17.线程调解逻辑还确定分配估计是否满足(例如,等于或超过)分配目标。分配目标可以是共享资源的多个条目中在当前时钟周期向线程分配的不应超过数目个条目的基数。
18.基于对线程的分配估计满足(例如,等于或超过)分配目标的确定,线程调解逻辑从线程调解决策中去除线程。通过从线程调解决策中去除线程,停止线程分配共享资源中的附加条目并可能阻止线程成为使用不佳的线程。在当前时钟周期之后,如果线程的当时分配估计不满足当时分配目标,则可以随后将线程包括在线程调解决策中,使得它不再停止分配共享资源中的条目。
19.在参考以下描述和附图时,这些和其他可能的实施方式将变得更加明显。
20.示例微处理器核心
21.图1示意性地描绘根据一些可能的实现方式的示例微处理器核心100,所述微处理器核心使用用于通过线程调解实现的线程共享资源中的软水印的技术。核心100是多线程中央处理单元(cpu)、单核多线程微处理器的核心、或多核多线程微处理器的一个核心。核心100利用已知的处理器设计技术,包括但不限于超标量架构、同时多线程、细粒度多线程、推测执行、分支预测、乱序执行和/或寄存器重命名。
22.核心100包括用于根据预定义指令集架构执行指令的电路系统。例如,预定义的指令集架构可以是以下项中的任一个:令集架构可以是以下项中的任一个:或其他复杂或精简指令集架构。
23.核心100支持多个线程的执行。给定线程可以包括一组指令,这些指令可以独立于另一个线程的指令执行。核心100可以同时执行多个线程的指令,所述多个线程例如是两个和八个同时执行的线程之间的线程。
24.核心100能够跨越从更受i/o约束的工作负载(例如,受网络和/或文件系统约束的
工作负载)到更受处理器约束的工作负载(例如,涉及密码学、计算机图形学或密集数学分析的工作负载)的连续工作负载类型有效地处理不同类型的计算工作负载。
25.核心100在多个线程之间动态地分配共享资源。此类共享资源可以包括但不限于分支资源(例如,分支预测器结构)、加载/存储资源(例如,加载/存储缓冲器和队列)、指令完成资源(例如,重新排序缓冲器和提交逻辑)、指令发布资源(例如,指令选择和调度结构、保留站)、寄存器重命名资源(例如,寄存器映射表),和/或存储器管理单元资源(例如,转换后备缓冲器、页面遍历资源)。
26.可以包括在核心100中的一组非排他性硬件组件包括指令提取单元110、指令高速缓存115、解码单元120、寄存器重命名单元125、指令队列130、执行单元135、加载/存储单元140和数据高速缓存140。可以包括在核心100中的图1中未示出的其他组件可以包括但不限于预取缓冲器、分支预测逻辑、全局/双模逻辑、循环逻辑、间接跳转逻辑、循环流解码器、微指令定序器、引退寄存器文件、寄存器分配表、重新排序缓冲器、保留站、算术逻辑单元和/或存储器排序缓冲器。
27.示例多线程微处理器核心
28.图2是描绘图1的示例多线程微处理器核心100的框图,所述多线程微处理器核心包括共享资源210、线程调解逻辑220、线程寄存器230、控制单元240和算术逻辑单元(alu)250。线程寄存器230是专用于特定线程的寄存器。核心100可以支持任何数目的线程并且实现方式不限于任何特定数目的线程。共享资源210可以是由多线程微处理器核心100中的多个线程使用的任何类型的资源。共享资源210的示例包括但不限于加载队列、寄存器文件、保留站等。
29.线程调解逻辑210调解来自线程的请求以根据软水印分配共享资源140中的条目,如下文更详细描述。线程调解逻辑220可以由计算机硬件、计算机软件或计算机硬件和软件的任何组合来实现。仅出于讨论目的,图2中描绘线程调解逻辑220作为单独的元件,并且线程调解逻辑220可以并入多线程微处理器核心100内的其他元件中,例如资源分配逻辑、线程切换逻辑和分派限制逻辑。多线程微处理器核心100可以包括图2中未描绘并且可以在实现方式之间不同的附加元件。
30.在一些可能的实现方式中,共享资源210的线程调解逻辑220包括一个或多个分配目标221、每线程分配计数222、每线程选择计数223、假设的每选择分配224、软水印有效信号225,以及软水印逻辑226。分配目标221、每线程分配计数222、每线程选择计数223、假设的每选择分配、软水印有效信号225,和/或软水印逻辑226可以专用于共享资源210,或在多个共享资源之间共享的一个或多个或全部共享资源。分配目标221、每线程分配计数22和每线程选择计数223可以在核心100的一个或多个寄存器中存储和维护。
31.软水印信号225可以在当前时钟周期设置为有效或无效。例如,由核心100执行的编程指令可以将软水印信号225设置为有效或无效。所述设置可能仅适用于当前时钟周期或包括当前时钟周期的多个时钟周期。
32.根据一些实施方案,如果信号225在当前时钟周期有效,则软水印逻辑226计算请求在当前时钟周期使用共享资源210的多个线程中的每个线程的分配估计。可以基于分配目标221、每线程分配计数222、每线程选择计数223和假设的每选择分配224来计算线程的分配估计。然而,一般而言,对于使用共享资源210的所有线程,分配目标221可以是每线程
的或全局的。可以静态地或动态地配置分配目标221。例如,可以基于检测线程如何使用共享资源210来动态地和自动地调整分配目标221。然而,一般而言,分配目标可以反映在当前时钟周期分配给线程的共享资源210中的不应超过数目个条目。每线程分配计数222反映共享资源210中已在某一时钟周期向每个线程分配的条目数,所述时钟周期可能比当前时钟周期晚几个时钟周期。每线程选择计数223可以反映在过去的时钟周期窗口期间选择每个线程使用共享资源210的次数。假设的每选择分配可以经验性地或启发式地确定为每当作为线程调解决策的结果而选择线程使用共享资源210时,线程预期在共享资源210中分配的条目数。
33.在一些实施方案中,软水印逻辑226将线程在当前时钟周期的分配估计计算为:(1)线程在当前时钟周期的计数222的每线程分配计数(可能比当前时钟周期在共享资源210中分配给线程的条目的实际数目晚几个周期)加上(2)线程在当前时钟周期的计数223中的每线程选择乘以(3)假设的每选择分配224。如果线程的计算出的分配估计满足分配目标(例如,共享资源210的全局分配目标或线程和共享资源210的线程特定分配目标),则软水印逻辑226在当前时钟周期从线程调解决策中去除线程。否则,线程仍然有资格在当前时钟周期进行线程调解。
34.另一方面,如果信号225在当前时钟周期无效,则软水印逻辑226基于线程的计数222的分配计数在当前时钟周期从线程调解决策中去除线程。例如,如果线程在当前时钟周期的分配计数满足分配目标(例如,共享资源210的全局分配目标或线程和共享资源210的线程特定分配目标),则软水印逻辑226在当前时钟周期从线程调解决策中去除线程。否则,线程仍然有资格在当前时钟周期进行线程调解。
35.在一些实施方案中,软水印逻辑226允许基于分配给共享资源210中的线程的条目数和线程的静态或动态调整的分配目标221来控制线程选择。软水印逻辑226还允许在以下时间之间桥接时钟周期:在进行线程选择以使用共享资源210时,以及在通过在更新线程的实际分配计数222之前进行线程选择时考虑线程的预期资源分配而更新线程的实际分配计数222时。例如,预期的资源分配可以基于线程的选择计数223和假设的每选择分配224。通过在进行线程选择时考虑预期资源分配,在线程选择与更新线程的实际分配计数222时之间存在大量时钟周期(例如,三个或更多个)的情况下,防止共享资源210中的资源分配的大幅振荡。
36.软水印
37.在多线程处理器核心中,多个线程可以相互竞争以使用共享资源,例如加载队列、保留站或寄存器文件。线程对共享资源的使用可以包括分配共享资源中的一个或多个条目,可以将用于线程的指令写入到所述条目中。例如,在加载队列的情况下,指令可以包括用于将数据从存储器加载到寄存器的加载指令。可以在仅几个时钟周期内或在扩展数目的时钟周期内将共享资源中的条目分配给线程。在不再将共享资源中的条目分配给线程之后,所述条目可以再次分配给线程,包括可能刚解除分配条目的线程。
38.为什么可以在扩展数目的时钟周期内将一个条目分配给一个特定线程的原因有很多。一些原因包括例如高速缓存未命中或指令对另一指令或寄存器的依赖性。如果线程在扩展数目的时钟周期内在共享资源中分配太多条目,则线程可能无法很好地使用共享资源。例如,线程可能正在为尚未准备好提交、引退、处理或分派的指令分配共享资源中的附
加条目,因为线程先前分配的条目的指令例如由于高速缓存未命中或指令或寄存器依赖性而仍在等待提交、引退、处理、或分派。同时,另一个线程可能已将这些附加条目用于准备好更快处理或分派的指令。
39.如果允许线程分配附加条目,则当估计线程满足(例如,等于或超过)分配目标时,本文所公开的软水印技术防止线程分配共享资源中的附加条目。可以通过在做出线程调解决策的当前时钟周期从线程调解决策中去除线程来防止线程这样做。因为从线程调解决策中去除线程,所以在当前时钟周期没有选择使用共享资源。因此,线程无法分配共享资源中的超出在当前时钟周期已分配给线程的附加条目。
40.在下一个和随后的时钟周期,再次为线程进行分配估计。如果分配估计随后不满足(例如,低于)分配目标,则在随后的时钟周期,线程包括在线程调解决策中。通过当线程的分配估计满足(例如,等于或超过)分配目标时,从线程调解决策中去除线程,线程可以分配的共享资源中的条目数受到限制。如果检测到线程对共享资源使用不佳,或者为了防止线程对共享资源使用不佳,可以临时执行此操作。因此,对于某些工作负载,共享资源的整体吞吐量得到提高。
41.由于微处理器中的延迟,在以下项之间可能存在多个时钟周期(例如,三个):(a)当前时钟周期的线程调解决策与(b)当更新在微处理器中为线程和共享资源维护的分配计数以反映在当前时钟周期分配给线程的共享资源中的条目数时。这种滞后可能由于微处理器在流水线阶段处理指令的方式造成。特别地,在微处理器中为共享资源做出线程调解决策的流水线阶段可以是分配计数的流水线阶段之前的几个时钟周期。因此,在做出线程调解决策的当前时钟周期,在当前时钟周期可能不知道线程已在共享资源中实际分配的条目数。因此,对线程进行分配估计以粗略估计线程已在当前时钟周期分配的条目数。然后在当前时钟周期使用分配估计来确定是否应该在当前时钟周期从线程调解决策中去除线程。
42.时钟周期
43.如本文所使用,术语“时钟周期”是指与多线程微处理器的振荡器(例如,晶体振荡器)的两个连续脉冲相关联的时间段,除非上下文另有明确指示。与时钟周期相关联的时间段的开始可以由振荡器的第一脉冲触发或引起,并且与时钟周期相关联的时间段的结束可以由振荡器的下一个脉冲触发或引起。
44.本文中可以参考“在”时钟周期发生的各种事件。如本文所使用,对“在”时钟周期发生的事件的引用指代至少在与时钟周期相关联的时间段期间发生的事件,除非上下文另有明确指示。
45.本文中还可以参考“在”时钟周期存在的各种状态。如本文所使用,对“在”时钟周期存在的状态的引用指代至少在与时钟周期相关联的时间段期间存在的状态,除非上下文另有明确指示。
46.同样,对在时钟周期“之前”或“之后”发生的事件的引用指代至少在与时钟周期相关联的时间段之前或至少在与时钟周期相关联的时间段之后发生的事件,除非上下文另有明确指示。
47.类似地,对在时钟周期“之前”或“之后”存在的状态的引用指代至少在与时钟周期相关联的时间段之前存在的状态或至少在与时钟周期相关联的时间段之后存在的状态,除非上下文另有明确指示。
48.过去时钟周期窗口
49.在一些可能的实现方式中,线程的分配估计基于线程对共享资源的最近使用。最近使用可以超过两个或更多个最近的连续时钟周期的窗口。例如,在对线程进行分配估计的当前时钟周期,所述估计可以基于在多个先前连续的时钟周期内线程对共享资源的使用。估计所基于的先前连续时钟周期的数目可以但不必须等于线程和共享资源的分配计数滞后于当前时钟周期的时钟周期数。例如,分配估计可以基于三个先前的连续时钟周期。因此,术语“过去窗口”指代相对于当前时钟周期的两个或更多个先前的连续时钟周期,除非上下文另有明确指示。
50.分配目标
51.如本文所使用,术语“分配目标”指代不超过在当前时钟周期应该分配给单个线程的共享资源条目的不应该超过数目。此数目可以包括在先前时钟周期期间分配给线程的任何条目,这些条目在当前时钟周期仍分配给线程。
52.分配目标可以基于共享资源中的总条目数。例如,如果加载队列中的总条目数是五十(50),则分配目标也可以是五十(50)。
53.然而,分配目标可以小于共享资源中的总条目数。例如,分配目标可以被静态地预定义为比共享资源的总条目数小的条目数。例如,分配目标可以是共享资源的总条目数的二分之一或三分之一或其他分数。
54.分配目标可以是共享资源的每线程目标,或者可以是使用共享资源的所有线程的“全局”分配目标。换句话说,对于使用共享资源的所有线程,分配目标可以是相同的值,或者对于使用共享资源的不同单独线程,分配目标可以是不同的单独值。如果每线程,则分配目标可能因不同的线程而异。
55.每线程或全局分配目标也可以响应于共享资源的使用而动态地调整。例如,基于检测到特定线程正在不良地使用共享源(即,是使用不佳的线程),可以从当前分配目标动态地降低特定线程的每线程分配目标。同样,可以基于检测到特定线程不再是相对于共享资源的使用不佳的线程来提高分配目标。在2019年9月27日提交的第16/585,424号相关美国专利申请中描述用于基于共享资源对线程的有用性来动态调整分配目标的一些可能技术。
56.满足分配目标
57.在本文中参考“满足”或“不满足”分配目标的分配估计。如本文所使用,对满足分配目标的分配估计的引用意味着分配估计等于或超过分配目标,除非上下文另有明确指示。分配估计是否需要超过分配目标才能满足分配目标,而不仅仅等于分配目标可以是根据手头特定实现方式的要求做出的实现方式选择。
58.在一些可能的实现方式中,分配估计等于或超过分配目标并且被认为满足分配目标。
59.在其他可能的实现方式中,分配估计必须超过分配目标才被认为满足分配目标,并且仅仅等于分配目标不足以满足分配目标。
60.在一些可能的实现方式中,等于分配目标的分配估计是否满足分配目标取决于先前的分配估计是否超过分配目标。例如,如果先前分配估计超过分配目标,则等于分配目标的当前分配估计满足分配目标。或者,在所述情况下,当前分配估计可以被认为不满足分配
目标。
61.线程调解决策
62.在当前时钟周期,可以做出线程调解决策以确定竞争或请求使用共享资源的多个线程中的哪一个被选择使用共享资源。可以根据多种不同的方法来做出线程调解决策,并且本技术不限于任何特定的线程调解方法。例如,可以使用循环或最近最少使用的方法。
63.基于满足分配目标的线程的分配估计,可以从线程调解决策中去除线程。然后在未从线程调解决策中去除的剩余线程中做出线程调解决策。例如,可以使用循环或最近最少使用的方法来选择剩余线程中的一个。作为另一替代方案,线程调解决策可以选择在当前时钟周期具有最低分配计数的剩余线程来使用共享资源。如上所述,此分配计数可能比当前时钟周期滞后几个时钟周期。因此,所选择线程的分配计数反映几个周期前分配给线程的实际条目数,这可能不是在当前时钟周期分配给线程的实际条目数。例如,所选择线程在当前时钟周期可能具有分配到其的更少或更多条目。作为另一替代方案,线程调解决策可以选择在当前时钟周期具有最低分配估计的剩余线程。
64.可以在当前时钟周期从线程调解决策中去除多个线程,因为线程的每个分配估计都满足分配目标。在这种情况下,如果存在多个剩余线程,则可以在剩余线程之间做出线程调解决策(例如,根据循环、lru、最低分配计数,或最低分配估计方法)。如果仅剩余一个线程,则可以在当前时钟周期选择所述线程来使用共享资源。
65.应注意,并非所有线程都可以在当前时钟周期请求或竞争使用共享资源。例如,一些线程可能不会在当前时钟周期请求使用共享资源。因此,当前时钟周期的线程调解决策可能不涉及所有线程的另一个原因是因为一些线程在当前时钟周期不请求使用共享资源。
66.还可以在当前时钟周期从线程调解决策中去除所有线程,因为线程的每个分配估计都满足分配目标。在这种情况下,可以使用回退调解方法。回退方法可以是循环、最近最少使用、最低分配计数,或最低分配估计。
67.出于除了满足分配目标的线程的分配估计之外的目标,还可以在当前时钟周期从线程调解决策中去除线程。例如,可以从线程调解决策中去除线程,因为所述线程尚未准备好分配共享资源中的条目,或者因为它处于停顿状态。
68.也可以在当前时钟周期没有从线程调解决策中去除任何线程。例如,每个线程的分配估计可能不满足当前时钟周期的分配目标。在这种情况下,所有线程在当前时钟周期参与线程调解决策,假设它们有资格参与。
69.分配计数
70.在一些可能的实现方式中,在做出线程调解决策的当前时钟周期跟踪在共享资源中向线程分配的条目数。此条目数在本文中有时被称为线程的“分配计数”。
71.在一些可能的实现方式中,如果线程的分配计数满足分配目标,则在当前时钟周期将线程从线程调解决策中去除。线程的分配计数可以在每个时钟周期进行更新,并且在做出线程调解决策的每个时钟周期进行评估。在一些可能的实现方式中,线程的分配计数比在当前时钟周期分配给线程的条目数滞后多个时钟周期。这种滞后可能由微处理器中的流水线阶段处理的性质造成。例如,落后的时钟周期数可以是一个、两个或三个时钟周期。因此,直到在当前时钟周期之后的多个时钟周期,在当前时钟周期分配给线程的条目数才由线程的分配计数反映。本文所公开的技术通过确定如本文别处更详细描述的分配估计来
解决此滞后。
72.选择计数
73.在一些可能的实现方式中,在做出线程调解决策的当前时钟周期跟踪在过去窗口期间选择线程使用共享资源的次数。此条目数在本文中有时被称为线程的“选择计数”。例如,如果过去窗口包含三个时钟周期,并且在过去窗口期间选择线程在三个时钟周期中的两个时钟周期内使用共享资源,则在当前时钟周期的线程的选择计数可能是两个。
74.在一些可能的实现方式中,如果线程的分配计数和选择计数的总和满足分配目标,则在当前时钟周期将线程从线程调解决策中去除。线程的选择计数可以基于滑动过去窗口在每个时钟周期更新。例如,线程的选择计数可以反映在前三个时钟周期中线程被选择使用共享资源的次数。
75.假设的每选择分配
76.在一些可能的实现方式中,“假设的每选择分配”被视为在当前时钟周期的线程调解决策的一部分。假设的每选择分配是在当前时钟周期的滑动过去窗口期间,每次选择线程使用共享资源时假设线程已分配的条目数。
77.可以静态地定义假设的每选择分配。例如,假设的每选择分配可以在一(1)到四(4)个条目之间。在一些可能的实现方式中,启发式地或经验式地确定假设的每选择分配。例如,假设的每选择分配可以静态地定义为二(2)。
78.假设的每选择分配也可以在每线程基础上进行跟踪。例如,线程的假设的每选择分配可以是在过去窗口期间每个时钟周期的平均每周期分配,在所述过去窗口中选择线程来使用共享资源。
79.在一些可能的实现方式中,如果以下项的总和满足分配目标:(a)线程在当前时钟周期的分配计数(可能滞后于在当前时钟周期分配给线程的实际条目数)和(b)线程的选择计数和假设的每选择分配的乘积,则在当前时钟周期从线程调解决策中去除线程。
80.软水印示例
81.可以在当前时钟周期对线程进行分配估计。存在进行分配估计的许多不同的可能方式。
82.通过一种可能的方式,基于线程的分配计数进行分配估计。例如,分配估计可以是在当前时钟周期的分配计数。
83.通过另一种可能的方式,基于线程的分配计数和选择计数进行分配估计。例如,分配估计可以是在当前时钟周期线程的分配计数和线程的选择计数的总和。
84.通过另一种可能的方式,基于线程的分配计数、线程的选择计数和预期的每周期分配进行分配估计。例如,分配估计可以是(线程在当前时钟周期的分配计数)加上(线程在当前时钟周期的选择计数乘以预期的每周期分配)。预期的每周期分配可以被静态地定义为在当前时钟周期针对线程跟踪的预期的每周期分配。
85.图3描绘根据一些可能的实现方式的呈表格形式的在七个连续时钟周期内的线程调解决策的示例。在此示例中,涉及三个线程。然而,在多线程微处理器中,少至两个线程,或多于三个线程(例如,四个或八个)可以参与共享资源的线程调解决策。应注意,并非所有线程可以在每个时钟周期请求使用资源。如果线程在当前时钟周期没有请求使用共享资源,则所述线程在当前时钟周期不参与线程调解决策,因此根据本文所公开的软水印技术,
所述线程在当前时钟周期不从线程调解决策去除。在图3中,“s”用于指定在对应时钟周期选择对应线程来使用共享资源。“r”用于指定在对应时钟周期从线程调解决策中去除对应线程。在这两种情况下,对应线程可能已经请求在对应时钟周期使用共享资源。在对应线程和对应时钟周期的表中的表单元格为空的情况下,对应线程可能已经请求在对应时钟周期使用共享资源,但未被选择在对应时钟周期使用共享资源,并且在对应时钟周期没有从线程调解决策中去除,或者对应线程可能尚未请求在对应时钟周期使用共享资源。
86.在时钟周期0,选择线程2来使用共享资源。在时钟周期1再次选择线程2来使用共享资源。在时钟周期2,在时钟周期2从线程调解决策中去除线程2,因为线程2在时钟周期2的分配估计满足分配目标。而且,在时钟周期2,选择线程1来使用共享资源。在时钟周期3从线程调解决策中去除线程2,因为线程2在时钟周期3的分配估计满足分配目标。而且,在时钟周期3,选择线程3来使用共享资源。在时钟周期4,选择线程1来使用共享资源。在时钟周期5,选择线程2来使用共享资源。在时钟周期6从线程调解决策中去除线程2,因为线程2在时钟周期6的分配估计满足分配目标。而且,在时钟周期6,选择线程3来使用共享资源。
87.每当选择线程来使用共享资源时,可以在共享资源中为所选择线程分配一个或多个附加条目。在当前时钟周期选择线程来使用共享资源之后的某一数目的时钟周期(例如,三个),这些附加分配可以反映在线程的分配计数中。当处理、分派、提交或回退条目中的指令时,也可能不再将分配给线程的共享资源中的条目分配给线程(解除分配)。
88.图4描绘根据一些可能的实现方式的使用图3的示例线程调解决策的呈表格形式的软水印示例。在此示例中,过去的窗口大小是三个时钟周期。也就是说,对于当前时钟周期,当前时钟周期的过去窗口包括相对于当前时钟周期的前三个时钟周期。
89.图4的示例示出仅针对线程2跟踪的信息和软水印计算。在图3的示例中针对线程1和线程3跟踪并执行类似信息和类似软水印计算。
90.在时钟周期0,线程2的分配目标为40,分配计数为35,选择计数为0,并且假设的每选择分配为2。线程2在未来时钟周期3的分配估计被计算为35。由于分配估计35不满足分配目标40,因此在时钟周期0,线程2包括在线程调解决策中。
91.在时钟周期1,线程2的分配目标为40,分配计数为35,选择计数为1,并且假设的每选择分配为2。线程2在未来时钟周期4的分配估计被计算为37。由于分配估计37不满足分配目标40,因此在时钟周期1,线程2不从线程调解决策中去除。
92.在时钟周期2,线程2的分配目标为40,分配计数为37,选择计数为2,并且假设的每选择分配为2。线程2在未来时钟周期5的分配估计被计算为41。由于分配估计41满足分配目标40,因此在时钟周期2,线程2从线程调解决策中去除。
93.在时钟周期3,线程2的分配目标为40,分配计数为37,选择计数为2,并且假设的每选择分配为2。线程2在未来时钟周期6的分配估计被计算为41。由于分配估计41满足分配目标40,因此在时钟周期3,线程2不包括在线程调解决策中。
94.在时钟周期4,线程2的分配目标为40,分配计数为35,选择计数为1,并且假设的每选择分配为2。线程2在未来时钟周期7(未示出)的分配估计被计算为37。由于分配估计37不满足分配目标40,因此在时钟周期4,线程2包括在线程调解决策中。
95.在时钟周期5,线程2的分配目标为40,分配计数为37,选择计数为1,并且假设的每选择分配为2。线程2在未来时钟周期8(未示出)的分配估计被计算为37。由于分配估计37不
满足分配目标40,因此在时钟周期5,线程2不从线程调解决策中去除。
96.在时钟周期6,线程2的分配目标为40,分配计数为39,选择计数为1,并且假设的每选择分配为2。线程2在未来时钟周期9(未示出)的分配估计被计算为41。由于分配估计41满足分配目标40,因此在时钟周期6,线程2从线程调解决策中去除。
97.在此示例中,分配目标保持不变。然而,如所提及,在一些可能的实现方式中,分配目标可以基于共享资源对线程的有用性在时钟周期内动态地调整为更低和更高。
98.示例软水印过程
99.图5描绘根据一些可能的实现方式的软件水印的示例过程的流程图。图5中描绘的过程500的大部分在本文其他地方描述,包括关于图3和图4的示例。因此,为了清楚起见,将主要以其所描绘的信息不同于本文其他地方所描述的信息的方式来描述过程500。
100.一般来说,图5描绘用于在多线程微处理器中竞争或请求使用共享资源的一组线程的软水印过程。
101.在操作510,对于共享资源的一组线程中的每个线程维护每线程分配计数。线程的每线程分配计数在每个时钟周期进行更新。线程在当前时钟周期的每线程分配计数反映在相对于做出线程调解决策的当前时钟周期之前的一定数目个时钟周期分配给线程的共享资源中的条目数。当将共享资源中的条目分配给线程时,线程的更新分配计数包括已分配的条目。并且当不再将条目分配给线程时,线程的更新分配计数不再包括已分配的条目。
102.一组线程中的每个线程的每线程分配计数可以比在当前时钟周期的线程调解决策滞后多个时钟周期。在这种情况下,线程在当前时钟周期的每线程分配计数可以实际上反映在相对于当前时钟周期之前的多个时钟周期分配给线程的共享资源中的条目数。同样,在当前时钟周期分配给线程的条目数可以由在做出线程调解决策的当前时钟周期之后的多个时钟周期线程的每线程分配计数反映。为了解决此滞后,在操作520,在滑动过去窗口内,对于共享资源的一组线程中的每个线程维护每线程选择计数。线程在当前时钟周期的每线程选择计数反映在当前时钟周期的当前滑动过去窗口期间选择线程来使用共享资源的次数。每线程选择计数在每个时钟周期更新,并且可能包含过去的时钟周期数(过去窗口)。例如,滑动窗口的过去时钟周期数可能等于每线程分配计数滞后于当前时钟周期的时钟周期数。例如,对于当前时钟周期,每线程选择计数可以包含过去三个时钟周期,不包括当前时钟周期。如上所述,用于共享资源的线程的选择计数指示在当前时钟周期的当前滑动窗口中作为线程调解决策的结果选择线程来使用共享资源的次数。
103.在操作530,在当前时钟周期为一组线程中的每个线程计算每线程分配估计。操作530在每个时钟周期为每个线程执行,所述线程然后有资格被选择并已请求使用共享资源。例如,基于在当前时钟周期的线程的分配计数和线程的选择计数来计算线程的分配估计。例如,线程的分配估计可以计算为以下各项的总和:(a)线程在当前时钟周期的分配计数和(b)线程在当前时钟周期的选择计数和假设的每选择分配(例如,两个)的乘积。
104.在操作540,将在操作530为每个线程计算的分配估计与分配目标进行比较。分配目标可以是全局分配或每线程分配目标。可以静态地定义或动态地调整分配目标。如果为线程计算的分配估计满足分配目标,则在当前时钟周期从线程调解决策中去除线程,使得所述线程没有资格在当前时钟周期被选择使用共享资源。另一方面,如果为线程计算的分配估计不满足分配目标,则所述线程在当前时钟周期仍有资格用于线程调解决策,使得在
当前时钟周期可以选择所述线程来使用共享资源。然而,在这种情况下,由于其他原因,线程仍可能在当前时钟周期从线程调解决策中去除。
105.结论
106.在前面的详细描述中,已经参考许多具体细节描述了可能的实现方式,这些具体细节可能因实现方式而异。因此,详细描述和附图被认为是说明性的而不是限制性的意义。
107.详细描述中对可能实现方式或一些可能实现方式的引用并不意味着实现方式排除另一个实现方式或其他实现方式,除非上下文另有明确指示。因此,所描述的实现方式可以以特定组合与一个或多个其他实现方式组合,除非上下文清楚地表明这些实现方式是不兼容的。此外,所描述的实现方式旨在通过示例而不是通过限制来说明。
108.在前述详细描述和所附权利要求中,尽管在某些情况下术语第一、第二等在本文中用于描述各种元件,但这些元件不应受这些术语的限制。这些术语仅用于区别一个元件与另一元件。例如,第一用户界面可以被称为第二用户界面,并且类似地,第二用户界面可以被称为第一用户界面,而不脱离本公开的范围。第一用户界面和第二用户界面都是用户界面,但它们不是同一个用户界面。
109.如前述详细描述和所附权利要求中所使用,除非上下文另外清楚地指示,否则单数形式“一(a)”、“一个(an)”和“所述”也意在包括复数形式。如前述详细描述和所附权利要求中所使用,术语“和/或”指代且涵盖相关联所列项中的一个或多个的任何和所有可能组合。
110.如前述详细描述和所附权利要求中所使用,术语“基于”、“根据”、“包括(includes、including、comprises和/或comprising)”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
再多了解一些

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

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

相关文献