多线程微处理器中的共享资源分配的制作方法

文档序号:30498380发布日期:2022-06-22 12:54阅读:120来源:国知局
多线程微处理器中的共享资源分配的制作方法
多线程微处理器中的共享资源分配


背景技术:

1.在本节中描述的方法是可采用的方法,但不一定是先前已经构想或采用的方法。因此,除非另外指明,否则不应假设本节中描述的方法中的任何方法仅仅因为它们包含在本节中而被认为是现有技术。此外,不应假设本节中描述的方法中的任何方法仅仅因为它们包含在本节中而是易于理解的、例行的或常规的。
2.多线程微处理器通常具有由多个线程使用的共享资源,诸如加载队列和保留站。共享资源通常按照先到先得的方式分配给线程。这种方法的一个问题是,如果使用共享资源的线程具有不同的执行特性,则一个线程可能通过获取过大的共享资源份额而阻碍其他线程的高效执行。例如,线程可能会获取加载队列中的大部分条目,如果当其他线程原本可受益于加载队列中具有更多条目时所述其他线程可以使用的条目太少,则这可能会使这些线程的性能降级。
3.此问题的一种技术解决方案是限制线程对共享资源的使用。例如,共享资源中分配给线程的条目数可能会针对所有线程或单个线程设置上限。然而,在不知道对特定线程的影响的情况下限制分配给线程的条目数可能会导致整体性能降级,因为线程的执行特性可能会有很大差异,并且一些线程可能会受益于在共享资源中具有超过有限数量的条目。因此,需要一种更好的方法来管理多线程微处理器中共享资源的使用。
附图说明
4.在附图各图中,通过举例而非限制的方式对实施方案进行描述,附图中相似的元件符号指代相似的元件。
5.图1是描绘多线程微处理器的框图。
6.图2是描绘由共享资源逻辑使用来管理对共享资源的访问的信息表的框图。
7.图3是描绘共享资源逻辑操作以更改共享资源到线程的分配的时间线的框图。
8.图4是描绘基于共享资源对多线程微处理器上的线程的有用性,将共享资源分配给所述线程的流程图。
9.图5a描绘在第一时钟周期窗口上针对线程获取的示例性使用数据。
10.图5b描绘在第二时钟周期窗口上针对线程获取的示例性使用数据。
11.图5c描绘在第三时钟周期窗口上针对线程获取的示例性使用数据。
12.图5d描绘在第四时钟周期窗口上针对线程获取的示例性使用数据。
具体实施方式
13.在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对实施方案的透彻理解。然而,对于本领域的技术人员将显而易见的是,可在没有这些具体细节的情况下实践实施方案。在其他情况下,以框图形式示出众所周知的结构和装置,以避免不必要地混淆实施方案。
14.i.概述
15.ii.架构
16.iii.基于有用性管理对共享资源的线程访问
17.a.概述
18.b.更改线程的共享资源分配限制
19.c.有用性度量
20.d.解决资源分配振荡
21.i.概述
22.提供了一种基于共享资源对多线程微处理器中的线程中的每一个线程的有用性,将所述共享资源分配给所述线程的方法。所述共享资源对线程的有用性基于所述共享资源中分配给所述线程的所述条目数和所述线程在所述共享资源中具有的所述活动条目数来确定。被在所述共享资源中分配了大量条目且在所述共享资源中具有少量活动条目(指示低水平并行性)的线程可在所述共享资源中具有较少条目的情况下高效地运行,并降低了它们在所述共享资源中的分配。如本文所用,术语“活动条目”是指共享资源中正在工作的条目,例如,当前正用于准备或执行指令的条目。对于同一共享资源,不同的线程可能具有不同的有用性水平,并且该方法适用于任意数量的线程和共享资源。该方法降低了线程在共享资源中获取大量条目,从而使得使用所述共享资源的其他线程的性能降级的可能性。
23.ii.架构
24.图1是描绘多线程微处理器100的框图,所述多线程微处理器包括控制单元110、算术逻辑单元(alu)120、线程寄存器130、共享资源140和共享资源逻辑150。线程寄存器130是专用于特定线程的寄存器。微处理器可支持任意数量的线程并且实施方案不限于任意特定数量的线程。共享资源140可以是由多线程微处理器100中的多个线程使用的任何类型的资源。共享资源140的示例包括但不限于加载队列、寄存器文件、保留站等。
25.共享资源逻辑150基于共享资源140对在多线程微处理器100上执行的线程的有用性,管理共享资源140到所述线程的分配,如下文更详细地描述。共享资源逻辑150可由计算机硬件、计算机软件或计算机硬件和软件的任意组合来实现。仅出于讨论目的,共享资源逻辑150在图1中被描绘为单独的元件,并且共享资源逻辑150可并入到多线程微处理器100内的其他元件,例如资源分配逻辑、线程切换逻辑和分派限制逻辑中。多线程微处理器100可包括图1中未描绘并且可能根据特定实现方式而变化的附加元件。
26.iii.基于有用性管理对共享资源的线程访问
27.a.概述
28.共享资源逻辑150评估共享资源140对线程的有用性并基于所述有用性更改共享资源140分配给所述线程的分配限制。如本文所用,术语“分配限制”是对共享资源140中可分配给线程的条目数的限制。图2是描绘由共享资源逻辑150使用来管理对共享资源140的访问的信息表200的框图。表200中的每一行都对应于在多线程微处理器100上执行的线程。每个线程的数据列包括:在第一列中的标识线程的数据;在第二列中的共享资源140中当前分配给线程的条目数;在第三列中的共享资源140中用于线程的活动条目数;以及在第四列中的有用性度量。所述有用性度量是活动条目数与当前分配给线程的条目数的比率。表200中的信息可保存在多线程微处理器100的内部或外部。可使用例如计数器或其他硬件元件来跟踪共享资源140中分配给每个线程的条目数以及共享资源140中用于每个线程的活动
条目数。
29.图3是描绘时间线300的框图,在所述时间线上,共享资源逻辑150基于共享资源140对线程的有用性,更改共享资源140的分配给所述线程的分配限制。时间线300包括时钟周期窗口(ccw)形式的n个时间段,其中每个ccw是一组时钟周期。每个ccw中的时钟周期数可使用性能建模来确定,并且可根据特定实现方式而变化。所述性能建模可平衡诸如反应足够快等因素,以防止线程消耗共享资源中的太多条目,从而降低其他线程的性能,而不会过度限制共享资源中可供线程使用的条目数。在实施方案中,ccw中的每个ccw包括16个时钟周期。所述时钟周期数可在共享资源逻辑150中配置并且可经由例如操作系统来选择。尽管ccw在图3中被描绘为是连续的,但ccw不限于是连续的,并且可具有间隙时钟周期。此外,ccw之间的间隙周期数可能因ccw而异,并且也可能随时间而变化。尽管本文在时钟周期窗口形式的时间段的上下文中描述了实施方案,但实施方案不限于时钟周期窗口本身。
30.从时间t0开始,在ccw 1上监视线程对共享资源140的使用,并且在时间t1(即ccw 1结束时),评估线程对共享资源140的使用并针对下一个ccw 2更新分配给线程的分配限制。需注意,ccw 2可能在ccw 1之后的任意数量的时钟周期发生,并且ccw 1与ccw 2之间的间隙时钟周期数可能随时间而变化。根据实施方案,共享资源逻辑150识别出被在共享资源中分配了足够多数量的条目以潜在地使其他线程的性能降级的线程。然后,共享资源逻辑150确定这些线程中的任一个线程是否在共享资源150中具有少量活动条目。被在共享资源140中分配了大量条目并且在共享资源140中具有少量活动条目的线程可在共享资源150中具有较少条目的情况下高效地运行,因此它们的分配限制被降低。
31.根据实施方案,使用阈值(例如,分配阈值和活动条目阈值)进行前述确定。对于特定线程,如果共享资源中当前分配给特定线程的条目数超过分配阈值,并且特定线程在共享资源中的活动条目数小于活动条目阈值,则特定线程的分配限制被降低。
32.分配阈值可使用性能建模来设计,并且被选择来识别在共享资源中消耗过多条目并可能使其他线程的性能降级(即,通过占用共享资源)的线程。活动条目阈值被选择来识别具有低水平并行性并因此在共享资源中具有较少条目数的情况下仍有可能高效运行的线程。例如,当线程正在执行一系列加法指令时,可能会出现低水平并行性,其中每条指令都依赖于前一条指令的结果。将这两个阈值结合使用防止了在共享资源中具有至少阈值数量的条目和低水平并行性的线程消耗共享资源中的太多条目,从而使其他线程的性能降级。
33.b.更改线程的共享资源分配限制
34.图4是描绘基于共享资源对多线程微处理器上的线程的有用性,将共享资源分配给所述线程的流程图400。
35.在步骤402中,针对多线程微处理器上的线程建立对共享资源的初始分配限制。在当前示例中,针对在多线程微处理器100上执行的线程t0至t3建立对共享资源140的初始分配限制。
36.根据实施方案,所述初始分配限制是共享资源中可用条目的总数。例如,假设共享资源140是具有50个条目的加载队列,则针对线程t0至t3中的每一者,将初始分配限制建立为50。需注意,将共享资源140中可用条目的总数指派为对所有线程的初始分配限制,可能允许所述线程任何线程消耗共享资源140中的大量条目,并使其他线程的性能降级。可替代
地,初始分配限制可能小于共享资源中可用条目的总数。例如,对于具有50个条目的加载队列,可针对线程t0至t3中的每个线程,将初始分配限制建立为10。
37.所述初始分配限制可能是线程特定的。例如,可为高优先级线程(例如,具有特殊指定的线程,或将参与满足特定服务质量(qos)要求的线程)指派比其他具有较低优先级的线程更大的初始分配限制。在先前示例中,可为高优先级线程指派初始分配限制50,而为其他线程指派初始分配限制30。初始分配限制可在共享资源逻辑150中预先配置,存储在由共享资源逻辑150使用的配置数据中,或者经由操作系统进行配置。此外,共享资源逻辑150可例如在通电时或响应于接收到命令(诸如操作系统命令),而将线程分配限制重置为初始分配限制。
38.在步骤404中,在第一组时钟周期上确定每个线程的分配条目数和活动条目数。例如,共享资源逻辑150可确定线程t0至t3在ccw 1上的分配条目数和活动条目数。图5a描绘了线程t0至t3在ccw 1上的示例性使用数据。在此示例中,线程t0至t3在ccw 1上的初始分配限制为50。活动条目数是当前正在工作的条目数,并且在ccw 1期间可能随着指令的处理而变化。因此,根据实施方案,活动条目数是ccw 1期间的最少活动条目数。在图5a所描绘的示例中,线程t1在ccw 1期间具有最大活动条目数,指示了相对于其他线程的最高水平的并行性,而线程t0在ccw 1期间具有最少活动条目数。相应地,相比于线程t0,线程t1将更受益于在共享资源140中具有更多条目。
39.在步骤406中,选择第一/下一个线程。在本示例中,选择线程t0,但是可使用任何方法来选择待评估的第一线程。在步骤408中,确定分配给所选线程的条目数是否超过分配阈值。例如,共享资源逻辑150确定共享资源140中分配给线程t0的条目数是否大于分配阈值。假设分配阈值为10,则分配阈值被满足,因为分配给线程t0的12个条目大于分配阈值10,并且控制进行到步骤410。这意味着线程t0已被在共享资源140中分配了足够多的条目,以潜在地使其他线程的性能降级。
40.在步骤410中,确定用于线程的活动条目数是否小于活动条目阈值。如先前所提及的,活动条目阈值用于识别出具有低水平的并行性并因此在共享资源分配较少的情况下仍有可能高效运行的线程。在本示例中,共享资源逻辑150确定线程t0在共享资源140中的活动条目数是否小于活动条目阈值。假设活动条目阈值为3,则活动条目阈值被满足,因为线程t0的一个活动条目小于活动条目阈值3,并且控制进行到步骤412。在满足步骤408和410中的两个阈值之后,线程t0在共享资源140中具有足够多的条目以潜在地使其他线程的性能降级,并且还具有低水平的并行性。因此,线程t0可在共享资源140中使用了较少条目数的情况下高效地运行。
41.在步骤412中,降低线程的共享资源分配限制,以防止所述线程使其他线程的性能降级。在本示例中,在下一个时间段,即下一个时钟周期窗口ccw 2,线程t0的共享资源140分配限制被降低。分配限制的降低量可根据特定实现方式而变化,并且实施方案不限于任何特定降低方法。根据实施方案,线程的分配限制被降低到降低的分配限制。例如,线程t0在共享资源140中的分配条目可从50降低到10。降低的分配限制可在共享资源逻辑150中配置和/或可经由操作系统来选择。降低的分配限制的值可使用建模来确定,并且所述值是足够低的值以防止线程使其他线程的性能降级。
42.作为将线程的共享资源分配限制降低到降低的分配限制的替代方案,可使线程的
分配限制以递增的方式降低。例如,分配给线程t0的条目数可从50降低1达49,或者从50降低10达40。可能会实现更复杂的方法,但需要附加计算成本。例如,所述降低可基于相对于活动条目阈值的活动条目水平。在此示例中,活动条目数为活动条目阈值的50%,将导致分配给线程的条目数降低50%。根据实施方案,基于线程的有用性度量来降低线程的分配限制。
43.根据实施方案,降低线程的分配限制不会导致线程立即放弃条目。相反,线程通常在工作完成时放弃条目,但直到线程的当前分配条目数降低到低于降低的分配限制,才会向线程授予共享资源140中的附加条目。在先前示例中,直到线程t0在共享资源140中具有少于10个分配条目,才会向线程t0授予共享资源140中的附加条目。
44.如果在步骤408中,分配给线程的条目数小于或等于分配阈值,或者在步骤410中,线程的活动条目数等于或大于活动条目数阈值,则控制进行到步骤414,并且线程的分配限制被重置(即,增加)。换句话说,如果共享资源140中的少量条目被分配给线程,则所述线程不会是使其他线程的性能降级的威胁。可替代地,如果线程具有大量活动条目,从而指示高水平的并行性,则所述线程可受益于在共享资源140中具有更多条目,并且其分配限制不会被降低。根据实施方案,当将线程的分配限制重置时,线程的分配限制被更改为初始分配限制。可替代地,线程的分配限制可增加指定量,所述指定量可为例如增量1,也可为更大的增量,诸如5或10。所述增量可在共享资源逻辑150中配置,或者可例如经由操作系统进行选择。也可基于线程的有用性度量来增加线程的分配限制。
45.在步骤412中降低线程的分配限制,或在步骤414中重置(增加)线程的分配限制之后,然后在步骤416中,确定是否需要处理更多线程。如果是,则控制返回到步骤406,并以相同的方式选择和处理下一个线程。一旦已经处理完所有线程,所述过程就在步骤418中完成。所述过程可针对任意数量的线程重复达任意次数。
46.根据实施方案,在每个时钟周期之后执行上述测试,并且如果到达步骤414,则针对下一个ccw,将线程的分配限制重置为初始分配限制。此外,在当前ccw期间不再测试该线程。如果在当前ccw期间,特定线程从未达到步骤414,则对于当前和下一个ccw,其分配限制保持降低。其他替代方案包括使用ccw上分配且活动的条目的平均数量,或使用ccw结束时分配且活动的条目的数量。
47.使用分配阈值和活动条目阈值两者来识别应该降低分配限制的线程,解决了如何防止多线程微处理器中具有低水平的并行性的线程书也使用共享资源的其他线程的性能降级的技术问题。该技术解决方案识别出当前在共享资源中被分配至少阈值数量的条目的线程(如分配阈值所示),使得所述线程潜在地“占用”共享资源并限制共享资源中可供其他线程使用的条目。然后,基于活动条目阈值,确定所识别的线程在共享资源中是否只有非常少的活动条目,即正在工作的条目。少量活动条目表明低水平的并行性并且线程在共享资源中的条目数较少的情况下能够继续高效运行,因此线程的分配限制降低。相反,具有少量分配条目或大量活动条目的线程不会使其分配限制被降低。
48.随着时间推移,线程的执行特性可能会发生变化,即由于不同的指令而发生变化。因此,共享资源中分配给线程的条目数以及该线程的活动条目数也可能随着时间推移而改变。因此,初始未降低分配限制的线程可能会在未来的ccw后降低其分配限制。
49.继续先前示例,图5b描绘了在ccw 2上针对线程t0至t3获取的示例性使用数据。在
ccw 1之后进行向下调整后,线程t0的分配限制为10。线程t1至t3的分配限制被重置为初始分配限制50,因为这些线程的分配条目数都小于分配阈值。
50.在ccw 2之后的时间t2,再次执行上述测试,并且当线程t0经历活动条目数从1略微增加到2时,线程t0继续满足分配阈值(分配条目》10)和活动条目阈值(活动条目《3)两者,因此线程t0的分配限制保持为10。然而,线程t2现在也满足这两个阈值,因为分配给线程t2的12个条目大于分配阈值10,而两个活动条目小于活动条目阈值3。因此,对于下一组时钟周期(即,ccw 3),线程t2的分配限制降低到10。线程t1和t3的分配限制都重置为初始分配限制50,因为它们对应分配条目数小于分配阈值。
51.图5c描绘了在时间t3,在ccw 3上针对线程t0至t3获取的示例性使用数据。在ccw 3期间,线程t0和t2的分配限制仍为10,因为在ccw 1之后对线程t0进行了向下调整,并且在ccw 2之后对线程t2进行了向下调整。在ccw 3上,线程t0的分配条目数保持高于分配阈值,但线程t0的活动条目数从2增加到5。因此,对于ccw 4,线程t0的分配限制被重置(增加)回初始分配限制50。在ccw 3期间,线程t2的12个分配条目继续超过分配阈值,并且线程t2只有一个活动条目,这小于活动条目阈值3。因此,线程t2在ccw 4中继续,分配限制降低为10。线程t1的分配限制被重置为初始分配限制50,因为当线程t1的11个分配条目超过了分配阈值10时,7个活动条目超过了活动条目阈值3。线程t3的分配限制被重置为初始分配限制50,因为六个分配条目小于分配阈值10。因此,虽然线程t1正在共享资源140中使用更多的条目,但线程t1的并行性水平高于活动条目阈值,因此其分配限制没有降低。
52.图5d描绘了在ccw 4上在时间t4,针对线程t0至t3获取的示例性使用数据。随着线程t0完成工作并且共享资源140中的条目被释放,在ccw 4上,线程t0的分配条目数从11减少到8。由于在ccw 4结束时,线程t0的分配条目数小于分配阈值,因此线程t0的分配限制被重置为初始分配限制50。线程t1的分配条目数在ccw 4上继续增加,但线程t1的分配限制再次被重置为初始分配限制,因为活动条目数超过了活动条目阈值。随着线程t2完成工作并且共享资源140中的条目被释放,在ccw 4上,线程t2的分配条目数从12减少到10。由于在ccw 4结束时,线程t2的分配条目数仍大于分配阈值10,并且活动条目数小于活动条目阈值,因此线程t2的分配限制仍降低为10。在ccw 4上,线程t3的分配条目数从6增加到10,但由于活动条目数超过活动条目阈值,因此线程t2的分配限制被重置为初始分配限制50。因此,虽然线程t1和t3都有可能占用共享资源140,但它们的活动条目数量都超过活动条目阈值,从而指示了高水平的并行性。因此,它们的分配限制被重置为初始分配限制。
53.c.有用性度量
54.如先前所述,有用性度量是活动条目数与当前分配给线程的条目数的特定于线程的比率。可在每个时钟周期、每n个时钟周期或在一段周期上计算有用性度量。例如,有用性度量可计算为n个时钟周期上的平均有用性度量。
55.有用性度量可用作分配阈值和活动条目阈值的替代,以用于确定是否应该更改线程的分配限制。例如,代替图4中的步骤408和410,可针对所选线程计算有用性度量,并将其与有用性阈值进行比较,以确定是否应该更改线程的分配限制。可在每个时钟周期、每n个时钟周期或一段周期上执行此测试,并且可测试单独有用性度量值,或可根据有用性阈值测试n个有用性度量值的平均值。根据实施方案,在线程的分配限制降低之前,在时钟周期窗口的每个时钟周期上,在线程的有用性度量不得不显示使用不佳(例如,不满足有用性阈
值)的情况下,可使用窗口化方法。可替代地,可将时钟周期窗口上线程的平均有用性度量与有用性阈值进行比较。
56.有用性度量还可用于确定线程的新分配限制。根据实施方案,当使用分配阈值和活动条目阈值或有用性阈值来确定要更改线程的分配时,使用该线程的有用性度量来确定所述线程的新分配限制,而不是将分配降低到降低的分配限制,如本文先前在图4的步骤412中所讨论。有用性度量可用作由共享资源逻辑150实现的等式的输入,其中等式的输出是线程的新分配限制。根据所使用的特定等式,这可允许线程的分配限制随着线程的活动条目数的增加而缓慢增加,这表明并行性增加,即使所述线程的活动线程数可能小于活动条目阈值。使用有用性度量来计算线程的新分配限制可能比使用如前所述的降低的分配水平提供更大的灵活性,但计算成本更高,并且可能存在被零除的问题。
57.d.解决资源分配振荡
58.随着线程指令类型的变化,在连续ccw上,线程的并行性水平可能会发生显著变化。使用本文所述的方法,这可能导致共享资源150中分配给线程的条目数在共享资源中条目的总数(例如,50)与降低的分配水平(例如,10)之间振荡。
59.提供了用于通过增加时钟周期数来降低线程资源分配振荡的技术,在所述时钟周期上,在线程的共享资源分配增加之前,线程必须表现出令人满意的有用性水平。根据实施方案,用于增加线程的资源分配的ccw大于用于减少线程的资源分配的ccw。例如,16个时钟周期的ccw可用于减少线程的资源分配,而32个或更多时钟周期的ccw可用于增加线程的资源分配。因此,在一组16个时钟周期之后,共享资源150中分配给特定线程的条目数可能降低,但特定线程必须在更长的时间段(即32个时钟周期)上表现出足够高的并行性水平,以便增加共享资源中的条目数。可替代地,可使用多个时钟周期窗口来增加共享资源分配,而不是使用更大的时钟周期窗口来增加共享资源分配。例如,具有16个时钟周期的一ccw可用于减少线程的资源分配,而具有16个时钟周期的两个或更多ccw可用于增加线程的资源分配。
60.根据另一实施方案,使用不同的阈值来增加资源分配。例如,当考虑是否增加共享资源140中分配给线程的条目数时,可分别在图4的步骤408和410中,使用分配阈值5和活动条目数阈值4。在此示例中,与当前未降低线程分配时使用的分配阈值10相比,较低分配阈值5更容易满足。类似地,与当前未降低线程分配时使用的活动条目阈值3相比,较高活动条目阈值4更难满足。因此,较低分配阈值和较高活动条目阈值的组合增加了共享资源分配降低的线程将继续具有降低的共享资源分配的可能性。
61.尽管本文在具有单个共享资源的多线程微处理器的上下文中描述了实施方案,但实施方案不限于此示例并且适用于任何数量的共享资源。这些实施方案包括具有管理多个共享资源的共享资源逻辑的多线程微处理器,以及具有管理多个共享资源的多个共享资源逻辑的多线程微处理器。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1