管理上游资源的同时进行的限流
背景技术:1.相关技术说明
2.处理器(诸如通用中央处理单元)利用任意数量的流水线阶段来处理软件应用的指令。这些处理器包括:用于多指令发出、分派、执行和退役的硬件;额外的路由和逻辑,其用于确定每个时钟周期同时进行的多个指令的数据转发;以及复杂分支预测方案。另外,许多处理器多次复制处理器核心,以便提高软件应用的并行执行。为了进一步利用指令级并行性,处理器核心同时执行多线程。
3.根据工作负载,处理器核心中的两个或更多个线程能够竞争处理器核心的共享资源,诸如指令取出单元(ifu)、分支预测单元、向整数执行单元或浮点单元(fpu)发出指令的保留站、加载-存储单元(lsu)内的加载队列和存储队列、传输所执行指令的结果的公共数据总线等。另外,跨两个或更多个处理器核心的线程可能竞争共享资源,诸如二级(l2)或三级(l3)高速缓存、存储器总线、输入/输出(i/o)设备。
4.当请求访问共享资源的计算单元的数量超过共享资源可支持同时访问的单元的数量时,发生资源竞争。计算单元的示例为硬件线程、处理器核心、微处理器等。资源竞争通常导致多周期停滞。资源竞争停滞的持续时间取决于授予当前访问共享资源的一个或多个其他计算单元的时间量。资源竞争导致的停滞降低复制核心或能够进行多线程执行的其他计算单元的益处。
5.鉴于上述,期望用于在计算系统中仲裁线程的有效方法。
附图说明
6.通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
7.图1是处理器核心的一个实施方案的框图。
8.图2是计算系统中的用于线程仲裁的控制逻辑的一个实施方案的框图。
9.图3是计算系统中的用于线程仲裁的方法的一个实施方案的流程图。
10.图4是计算系统中的用于线程仲裁的方法的一个实施方案的流程图。
11.图5是计算系统中的用于线程仲裁的方法的一个实施方案的流程图。
12.图6是微处理器的一个实施方案的框图。
13.虽然本发明容易有各种修改和替代形式,但是通过举例方式在附图中示出特定的实施方案并在本文中对其进行详细描述。然而,应理解,附图及其详细描述并不意在将本发明局限于所公开的特定形式,而相反,本发明将涵盖落入如所附权利要求限定的本发明的范围内的所有修改、等效形式和替代方案。
具体实施方式
14.在以下描述中,阐述了众多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实施方
案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,出于说明简明和清楚起见,在图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其他元件被放大。
15.公开了用于在计算系统中仲裁线程的各种系统、装置、方法和计算机可读介质。在各种实施方案中,计算系统包括多个共享资源。资源的示例为在不同的指令处理阶段处理器核心中使用的各种类型的计算单元。阶段包括指令取出阶段、解码阶段、分派阶段和发出阶段等。多线程操作系统或管理程序将软件应用划分为多个进程,每个进程具有多个线程。操作系统或管理程序中的调度器管理将这些不同的软件线程分配给硬件,诸如计算系统的多个处理器核心的特定核心。特定核心中的多个线程共享核心中的计算单元和数据存储队列。资源的另一个示例为多个核心共享的分层存储器子系统中的存储器控制器和数据存储阵列。核心包括高速缓存分层结构中的一个或多个本地高速缓存级,该本地高速缓存级由核心中的多个线程共享,并且计算系统包括由多个核心共享的一个或多个全局高速缓存级。
16.当请求访问共享资源的源的数量超过共享资源支持同时访问的源的数量时,发生资源竞争。源的示例为核心中的线程、核心等。寻求利用共享资源但未被授权访问的源停滞。为了减少计算系统中对停止的惩罚,软件监视器和硬件监视器中的一者或多者确定特定源(例如,线程、核心等)是否有资格在共享资源处进行限流(throttling)或减少指令处理。但是,对共享资源限流可能导致共享资源上游的其他资源停滞或降低性能,因为停滞的源已经使用了上游资源。如本文所用,“软件监视器”包括用于监视软件线程的资源利用率的各种软件中的一种,并标识用于限流的特定线程,诸如操作系统、管理程序、基本输入输出软件(bios)控制的功能、使用应用编程器接口(api)的用户级软件、以及能够操纵计算系统的配置的任何其他类型的软件。
17.将限流点从共享资源向上游移动从资源竞争中释放一些上游资源,但是如果将该点向上游移动得太远,则线程的性能可能会降低到阈值以下。另外,原始共享资源可能继续经历资源竞争。在实施方案中,竞争中的原始共享资源为核心二级(l2)高速缓存。可能有并设想了高速缓存分层结构的其他级。对来自l2高速缓存的指令处理上游的线程的仲裁进行限流并不保证l2高速缓存传递的存储器请求数量减少。l2高速缓存接收来自l1数据高速缓存和l1指令高速缓存的存储器请求。另外,l2高速缓存控制器能够针对一个或多个未命中请求生成预取出请求以发送到较低级存储器(诸如三级(l3)高速缓存或系统存储器)。为了在支持对本地l2高速缓存限流与维护l2高速缓存处的特定存储器带宽之间实现平衡,核心的控制逻辑监视l2高速缓存处的高速缓存未命中数,并在特定高速缓存级、l2高速缓存处,为线程设置高速缓存未命中阈值数。
18.当核心的控制逻辑确定或接收到指定以下内容的指示时:l2高速缓存处的特定线程的高速缓存未命中数大于高速缓存未命中阈值数,控制逻辑通知特定上游计算单元对线程的指令处理进行限流。在一个实施方案中,上游计算单元为分派单元。在另一个实施方案中,上游计算单元为指令取出单元、解码单元、加载/存储单元(lsu)等。
19.在各种实施方案中,核心的控制逻辑为上游计算单元设置限流严重级别,限流严重级别指定选择线程的指令以在计算单元上进行处理的选择率。另外,严重级别指定维持选择率的时间段。当该时间段过去时,如果l2高速缓存处的高速缓存未命中数仍然大于高
速缓存未命中阈值数,则控制逻辑将严重级别更新到更限制性的限流级别。但是,如果特定高速缓存级处的高速缓存未命中数不大于高速缓存未命中阈值数,则控制逻辑将严重级别更新到较不限制性的限流级别。
20.参照图1,示出了执行无序执行的通用处理器核心100的一个实施方案。在一个实施方案中,处理器核心100同时处理两个或更多个线程。指令高速缓存(i-cache)存储软件应用的指令,并且对应的转译后备缓冲区(tlb)存储地址以便访问指令。如果不存在i-cache未命中,则指令取出单元(ifu)104在每个时钟周期从i-cache 102中取出多个指令。ifu 104包括保存指针的程序计数器,该指针指向要从i-cache 102中取出的下一指令的地址,该地址与i-tlb中的地址相比较。ifu 104还包括分支预测单元(未示出),其用于在执行单元确定后续流水线阶段的实际结果之前预测条件指令的结果。
21.解码器单元106对多个取出的指令的操作码进行解码,并在有序的退役队列(诸如重排序缓冲区118、保留站108和加载/存储单元114)中分配条目。在一些实施方案中,解码单元106还对指令操作数进行寄存器重命名,以消除读后写(war)和写后写(waw)的危险。在其他实施方案中,重排序缓冲区118执行寄存器重命名。当为指令消除了写后读(raw)的危险时,指令被分配到保留站108中。在保留站108中分配条目视为分派。保留站108充当指令队列,指令在其中等待,直到它们的操作数可用为止。当操作数可用且硬件资源也可用时,保留站108的逻辑向整数和浮点功能单元110或加载/存储单元114发出无序指令。
22.功能单元110包括算术逻辑单元(alu),其用于进行计算机计算,诸如加法、减法、乘法、除法和平方根。可以将逻辑包括在内来确定条件指令的结果。加载/存储单元(lsu)114接收发出的存储器访问,比如加载和存储操作。加载/存储单元114包括用于执行存储器访问指令的队列和逻辑。在实施方案中,加载/存储单元114包括验证逻辑,其用于确保加载指令接收来自正确的最新的存储指令的转发数据。
23.功能单元110和加载/存储单元114在公共数据总线112上呈现结果。重排序缓冲区118接收来自公共数据总线112的结果。在一个实施方案中,重排序缓冲区118为先进先出(fifo)队列,其确保指令按照程序次序有序地退役。这里,接收到其结果的指令被标记为退役。如果指令位于队列的头部,则重排序缓冲区118的逻辑将其结果发送到寄存器文件120。寄存器文件120保存处理器核心100的通用寄存器的架构状态。然后,重排序缓冲区118中的指令按次序退役,且逻辑更新其队列头部指针,以按程序次序指向后续的指令。
24.公共数据总线112上的结果也被发送到保留站108,以便将值转发给等待结果的指令的操作数。当这些等待指令的操作数具有值并且硬件资源可用于执行指令时,这些等待指令可以无序地从保留站108发出到功能单元110或加载/存储单元114中的适当资源。未用的或未退役的存储器访问指令在加载/存储单元中具有条目。来自最新的、未用的较旧存储指令的针对正在运行的或未用的加载指令的转发数据值被放置在公共数据总线112上,或者直接路由到加载/存储单元114中的加载缓冲区中的适当条目。
25.加载/存储单元114将存储器访问请求发送到芯片上的一级(l1)数据高速缓存(d-cache)116。在一些实施方案中,核心100还包括二级(l2)高速缓存130,其用于服务来自l1数据高速缓存116和指令高速缓存102的存储器请求,该指令高速缓存也是l1高速缓存。l1数据高速缓存116和l2高速缓存130中的每一者都有自己的tlb,用于与接收到的存储器请求进行地址比较。l1数据高速缓存116和l2高速缓存130的高速缓存控制器以串行或并行方
式搜索数据阵列。如果在l1数据高速缓存116或指令高速缓存102中找不到被请求的存储器线,则对应的高速缓存控制器向l2高速缓存130发送未命中请求。
26.如果在l2高速缓存130中找不到被请求的存储器线,则l2高速缓存控制器发未命中请求以送访问较低级存储器中的存储器(诸如三级(l3)高速缓存或系统存储器)。在各种实施方案中,核心100和其他外部核心共享较低级存储器。等待被请求的存储器线从较低级存储器到达通常需要大量的时钟周期。为了减少该等待带来的性能下降,在一些实施方案中,l2高速缓存控制器为一个或多个未命中请求生成一个或多个预取出请求。l2高速缓存控制器基于地址范围内的访问数、自访问该地址范围后的时间量、进程标识符(id)或线程id、优先级级别等来更新预取出请求的数量。l1数据高速缓存116和指令高速缓存102的高速缓存控制器以及加载/存储单元114不知悉该信息。
27.多个线程共享核心100内的多个资源。例如,这些多个线程共享图1中所示的框102-130中的每一个。在实施方案中,硬件监视器140收集数据,以帮助调整和理解软件应用的行为以及核心100上的硬件资源利用率。另外,一些事件在软件中是不方便测量的,诸如峰值存储器竞争或调用中断处理程序的响应时间。硬件监视器140中的硬件(诸如电路)扩展了测量的种类和细节,对应用性能影响很小或没有影响。基于硬件监视器140和软件监视器142中的一者或多者提供的信息,线程限流单元150管理框102-130中的一者或多者的指令限流。
28.在一个实施方案中,硬件监视器140包括计数器,该计数器用于计数执行流水线刷新、数据高速缓存窥探和窥探命中、高速缓存和tlb未命中和未命中率、读和写操作、写回的数据高速缓存线、分支操作、采取的分支操作、整数或浮点流水线中的指令的数量、总线利用率和各种队列的利用率而花费的处理器周期的数量。如前所述,软件监视器142包括用于监视软件线程的资源利用率的各种软件中的一种,并标识用于限流的特定线程。软件监视器142的示例是操作系统、管理程序、基本输入输出软件(bios)控制的功能、使用应用编程器接口(api)的用户级软件、以及能够调整计算系统的配置的任何其他类型的软件。为说明的目的,硬件监视器140、软件监视器142和线程限流单元150中的每一者均示出为位于处理器核心100的处理框102-130之外。在其他实施方案中,硬件监视器140、软件监视器142和线程限流单元150中的一者或多者的功能被集成在核心100的整个平面图中。另选地,硬件监视器140和线程限流单元150中的部分既位于核心100内部,也位于核心100外部。设想了所有此类组合。
29.线程限流单元150的功能在硬件(诸如电路)、各种类型的软件中的一种或两者中实现。在各种实施方案中,线程限流单元150接收指定以下内容的指示:与框102-130中的一个框相对应的一个或多个共享资源由特定线程利用高于阈值利用率。硬件监视器140和软件监视器142中的一者或多者将该指示发送到线程限流单元150。在一个实施方案中,标识的共享资源为l2高速缓存130,其具有由多个线程共享的一个或多个队列。在实施方案中,线程限流单元150为l2高速缓存130处的特定线程设置阈值数量的高速缓存未命中。然后,当线程限流单元150确定或接收到指定以下内容的指示时:l2高速缓存处的特定线程的高速缓存未命中数大于高速缓存未命中阈值数,线程限流单元150通知特定上游计算单元对特定线程的指令处理进行限流。在一个实施方案中,上游计算单元为重排序缓冲区(分派单元)118。在另一个实施方案中,上游计算单元为指令取出单元104、解码单元106、加载/存储
单元(lsu)114等。
30.虽然在下面的描述中使用了重排序缓冲区118,但在其他实施方案中,使用另一个上游计算单元。在各种实施方案中,线程限流单元150为重排序缓冲区118设置限流严重级别,该限流严重级别指定选择线程的指令以在重排序缓冲区118上进行处理的选择率。另外,严重级别指定维持选择率的时间段。严重级别也称为限流级别。当该时间段过去时,如果l2高速缓存130处的高速缓存未命中数仍然大于高速缓存未命中阈值数,则线程限流单元150将严重级别更新到更限制性的限流级别。但是,如果l2高速缓存130处的高速缓存未命中数不大于高速缓存未命中阈值数,则线程限流单元150将严重级别更新到较不限制性的限流级别。更限制性的限流级别具有小于当前的选择率的选择率。在一些实施方案中,与更限制性的限流级别对应的时间段大于当前时间段。相反,较不限制性的限流级别具有大于当前的选择率的选择率。在一些实施方案中,与较不限制性的限流级别对应的时间段小于当前时间段。
31.为了使数据由诸如操作系统、另一个软件监视器142或软件编程器访问,在一个实施方案中,硬件监视器140和线程限流单元150中的一者或多者包括监视输出引脚。输出引脚在预定事件、计数器溢出、状态信息或其他之后切换。通过将这些引脚中的一个连接到中断引脚,软件对报告的数据做出反应。在另一个实施方案中,指令集架构(isa)中包括特定指令,以便分别禁用和启用数据收集,并在硬件监视器140和线程限流单元150中的一者或多者中读取一个或多个特定寄存器。
32.在一些实施方案中,访问这些寄存器需要内核级支持。例如,程序需要处于管理程序模式并执行系统调用以访问这些寄存器。在又一个实施方案中,操作系统提供与硬件监视器140、软件监视器142和线程限流单元150中的一者或多者相对应的一个或多个应用编程接口(api)。这些api允许编程与资源竞争严重级别相对应的可配置阈值、线程仲裁率和时间段。
33.现在参考图2,示出了线程限流单元200的一个实施方案的一般化框图。线程限流单元200(或单元200)包括控制和状态寄存器210、控制逻辑220和表230。控制逻辑220在硬件(诸如电路)、软件(诸如固件)或两者中实现。控制和状态寄存器从软件监视器和硬件监视器中的一者或多者接收信息。信息的示例为指定需要限流的特定线程的指示、经历资源竞争的共享资源的标识、在标识的共享资源上进行线程仲裁期间使用的选择率和时间段、测量的利用率或资源竞争严重级别的另一个指示、其他阈值等。
34.另外,控制和状态寄存器210从特定的共享资源接收信息。共享资源的一个示例是多级高速缓存层次结构的特定高速缓存级。表230包括多个条目240a-240d。各种数据存储结构中的一种被用来实现表230。结构的示例为触发寄存器、各种随机存取存储器(ram)中的一种、内容可寻址存储器(cam)等。如图所示,条目240a-240d中的每个条目包括多个字段。尽管字段250-264以连续的方式示出,但在其他实施方案中,使用字段的另一个数量,并且存储布置与所示的不同,并且可能在一些字段之间使用非连续存储。
35.当线程被标识为需要限流时,控制逻辑220或表230中的控制逻辑分配条目240a-240d中的条目。字段250存储标识线程的线程标识符,并且字段252存储进程的进程标识符,该线程源自该进程。当经历资源竞争的特定共享资源为高速缓存级时,字段254为该高速缓存级存储高速缓存未命中阈值数。字段256存储标识符,其标识被限流的计算单元。该计算
单元处理来自经历资源竞争的共享资源的上游的指令。在一个实施方案中,经历资源竞争的共享资源为核心中的l2高速缓存,并且待限流的上游计算单元为核心中的分派单元。字段258存储表条目的年龄的指示。
36.字段260存储严重级别,其指示需要对线程进行多大程度的限流。在一个实施方案中,严重级别基于共享资源的利用率测量结果、共享资源的吞吐量或带宽以及资源竞争的持续时间。外部软件监视器、外部硬件监视器和控制逻辑220中的一者或多者设置严重级别。字段262存储选择线程的指令以在特定上游计算单元处进行处理的选择率。字段264存储用于维持选择率的仲裁时间段。字段262和264通过存储在字段260中的严重级别进行设置。在各种实施方案中,从控制和状态寄存器210中的寄存器中读取存储在字段262和264中的值。
37.现在参照图3,示出了用于在计算系统中仲裁线程的方法300的一个实施方案。出于讨论的目的,以顺序的次序示出该实施方案中(以及图4-图5中)的步骤。然而,应注意,在所描述的方法的各种实施方案中,同时地、按照与所示出的次序不同的次序执行所描述的要素中的一者或多者,或者完全省略所述要素。也根据需要执行其他附加要素。本文所述的各种系统或装置中的任一者被配置为实现方法300。
38.多线程软件应用在同一应用中生成多个软件进程。多线程操作系统将软件应用划分为多个进程,每个进程具有多个线程。操作系统中的调度器管理将这些不同的软件线程分配给硬件,诸如计算系统的多个处理器核心的特定核心。硬件和软件监视器中的一者或多者监视正在处理的多个线程(框302)。例如,操作系统的调度器能够进行监视。其他类型的软件监视器至少包括管理程序、基本输入输出软件(bios)控制的功能以及使用应用编程器接口(api)的用户级软件。类似地,处理器核心中的专用硬件监视器能够测量核心上多个线程共享的资源的竞争。
39.软件监视器和硬件监视器中的一者或多者能够确定线程是否有资格作为限流的候选者。在实施方案中,操作系统或其他软件为特定线程的存储器带宽管理架构上定义的服务质量(qos)目标。特定线程是从需要满足qos存储器带宽要求的软件应用的进程中派生出来的。当另一个线程消耗资源(诸如占用队列或总线利用),导致其他特定线程无法满足qos存储器带宽要求时,操作系统或其他软件将资源消耗线程标识为限流的候选者。类似地,在一些实施方案中,硬件监视器将资源消耗(诸如队列占用、总线利用等)与阈值进行比较。当特定线程超过一个或多个阈值时,硬件监视器将资源消耗线程标识为限流的候选者。当操作系统和硬件监视器中的一者或多者确定特定线程有资格作为限流的候选者时,向核心中的控制逻辑发送指示。
40.如果核心中没有线程是限流的候选者(条件框304的“否”分支),则方法300的控制流返回到框302。然而,如果核心中的多个线程中的线程为限流的候选者(条件框304的“是”分支),则核心的控制逻辑为线程设置限流严重级别(框306)。控制逻辑基于严重级别为特定高速缓存级处的线程设置未命中阈值数(框308)。在实施方案中,特定高速缓存级为高速缓存级,其中特定高速缓存级生成的存储器访问请求(特别是由于推测预取出请求)的数量对于高速缓存分层结构的更高级别是未知的。例如,对于一个或多个未命中请求,高速缓存控制器生成一个或多个预取出请求,因此从特定高速缓存级发出的存储器请求的实际数量对于高速缓存分层结构中的更高级别是未知的。
41.在一个实施方案中,软件监视器和硬件监视器中的一者为特定高速缓存级处的线程确定未命中阈值数。在线程的指令的处理期间,如果特定高速缓存级处的高速缓存未命中数不大于阈值数(条件框310的“否”分支),则控制逻辑继续处理线程,同时控制逻辑和高速缓存控制器中的一者或多者监视特定高速缓存级处的高速缓存未命中数(框312)。如果特定高速缓存级处的高速缓存未命中数大于阈值数(条件框310的“是”分支),则控制逻辑使得线程在特定高速缓存级的上游的处理阶段进行限流处理(框314)。
42.参照图4,示出了用于在计算系统中仲裁线程的方法400的一个实施方案。处理器核心处理多线程的指令。核心的控制逻辑标识有资格作为限流的候选者并在特定高速缓存级处没有超过其未命中阈值数的线程(框402)。框402中的该标识通常对应于(图3的)方法300的框310的“否”分支到框312的控制流。如果控制逻辑确定线程不再作为限流的候选者(条件框404的“否”分支),则控制逻辑为线程移除未命中阈值数(框406)。例如,特定高速缓存级处的控制逻辑和高速缓存控制器中的一者或多者将阈值数重置为默认最大值,否则将针对线程使阈值数无效。在实施方案中,软件监视器和硬件监视器中的一者或多者确定线程不再是候选者,并通知控制逻辑。在另一个实施方案中,控制逻辑确定线程在超过限制的持续时间内没有超过其高速缓存未命中阈值数。在为线程移除高速缓存未命中阈值数后,核心继续处理线程(框408)。
43.如果控制逻辑确定线程仍然是限流的候选者(条件框404的“是”分支),但是线程已经完成,因此线程不再是活动的(条件框410的“否”分支),则方法400完成(框412)。如果控制逻辑确定线程仍然是限流的候选者(条件框404的“是”分支),并且线程仍然是活动的(条件框410的“是”分支),则逻辑确定线程在特定高速缓存级处是否生成了超过其高速缓存未命中阈值数的高速缓存未命中数。
44.如果特定高速缓存级处的线程的高速缓存未命中数不大于未命中阈值数(条件框414的“否”分支),则方法400的控制流返回到框402,其中线程的指令继续被处理,而线程在特定高速缓存级处还没有超过其高速缓存未命中阈值数。如果特定高速缓存级处的线程的高速缓存未命中数大于未命中阈值数(条件框414的“是”分支),则核心在特定高速缓存级的上游的处理阶段对该线程进行限流处理(框416)。方法500中提供了关于限流的进一步详细信息。
45.参照图5,示出了用于在计算系统中仲裁线程的方法500的一个实施方案。处理器核心处理多线程的指令。核心的控制逻辑标识有资格作为限流的候选者并在特定高速缓存级处超过其未命中阈值数的线程(框502)。核心的控制逻辑选择特定高速缓存级的上游的处理阶段(框504)。当计算单元在比在特定高速缓存级处访问数据更早的指令处理阶段处理指令时,该计算单元称为“上游”计算单元。在一个实施方案中,控制逻辑通知位于来自特定高速缓存级的指令处理上游的分派单元。在另一个实施方案中,控制逻辑通知另一个上游计算单元,诸如指令取出单元、解码单元、加载/存储单元(lsu)等。
46.核心的控制逻辑在选择的上游处理阶段处为线程选择初始的限流严重级别(框506)。控制逻辑选择在仲裁多个线程以访问共享资源期间使用的选择率(或仲裁率)。另外,控制逻辑基于严重级别选择时间段(框508)。在实施方案中,控制逻辑将选择率设置为第二数量时钟周期中的第一数量指令中的最大值。第一数量和第二数量中的每一者都存储在可编程配置寄存器(诸如控制和状态寄存器)中。在一个实施方案中,第二数量时钟周期是基
于严重级别的指数值。第二数量时钟周期的示例为值2的严重级别指示的幂。因此,严重级别1提供了第二数量2^1的时钟周期或2个周期。更限制性的严重级别2提供了第二数量2^2的时钟周期或4个周期。又更限制性的严重级别3提供了第二数量2^3的时钟周期或8个周期等。在实施方案中,用于使用选择率的选择的时间段是第二数量的整数倍。对于严重级别为3,第二数量的时钟周期为8个周期,且整数倍为5时,则时间段为8乘5,或40个周期。
47.核心基于选择的仲裁率在选择的上游处理阶段对线程进行限流处理(框510)。如果时间段没有过去(条件框512的“否”分支),则方法500的控制流返回到框510,其中核心继续对线程进行限流处理。如果时间段已经过去(条件框512的“是”分支),但是线程在特定高速缓存级处没有产生大于高速缓存未命中阈值数的高速缓存未命中数(条件框514的“否”分支),则控制逻辑在选择的上游处理阶段为线程选择较不限制性的限流严重级别(框518)。然后,方法500的控制流返回到框508,其中控制逻辑基于严重级别选择仲裁率和时间段。
48.如果时间段已经过去(条件框512的“是”分支),且线程在特定高速缓存级处产生大于高速缓存未命中阈值数的高速缓存未命中数(条件框514的“是”分支),则控制逻辑在选择的上游处理阶段为线程选择更限制性的限流严重级别(框518)。然后,方法500的控制流返回到框508,其中控制逻辑基于严重级别选择仲裁率和时间段。
49.参照图6,示出了示例性微处理器600的一个实施方案。微处理器600包括:耦接到存储器630的存储器控制器620;接口逻辑640;一个或多个处理单元615a-615b,其包括一个或多个处理器核心612a-612b和对应的高速缓存存储器子系统614a-614b;交叉互联逻辑616;共享高速缓存存储器子系统618;以及共享图形处理单元(gpu)650。存储器630示出为包括操作系统代码632。操作系统632包括用于将软件线程分配给微处理器600中的硬件的调度器634。另外,存储器620包括软件监视器636。软件监视器636的示例是管理程序、基本输入输出软件(bios)控制的功能、使用应用编程器接口(api)的用户级软件、以及能够调整微处理器600的配置的任何其他类型的软件。应注意,操作系统代码632和软件监视器636中的各种部分驻留在存储器630、一个或多个高速缓存(614a-614b、618)(存储在非易失性存储设备诸如硬盘(未示出)上)等中。在一个实施方案中,微处理器600的例示功能并入到单个集成电路中。
50.gpu 650可以包括专用于个人计算机、工作站或视频游戏控制台的图形渲染设备的一个或多个图形处理器核心和数据存储缓冲区。接口640通常提供用于微处理器600外的输入/输出(i/o)设备到共享高速缓存存储器子系统618和处理单元615a-615b的接口。i/o设备包括外围网络设备,诸如打印机、键盘、监视器、相机、读卡器、硬盘或软盘驱动器或驱动器控制器、网络接口卡、视频加速器、声卡、调制解调器、各种数据采集卡。
51.i/o设备由微处理器600的处理单元615a-615b和gpu 650中的每一者共享。另外,这些i/o设备由其他微处理器中的处理单元615a-615b共享。接口640用于与这些其他微处理器和/或其他处理节点通信。通常,接口逻辑640包括缓冲区,其用于接收来自对应链路的数据包并缓冲要在对应链路上传输的数据包。任何合适的流控制机制都用于向微处理器600传输数据包并传输来自微处理器的数据包,并且互连逻辑616支持该机制。
52.微处理器600经由相应的存储器控制器620连接到相应的存储器。存储器使用各种类型的存储器设备中的任一种。微处理器600的地址空间被在多个存储器之间划分。每个微
处理器600或包括微处理器600的相应处理节点使用存储器映射,其用来确定哪些地址映射到哪些存储器,并且因此确定,对于特定地址的存储器请求应该路由到哪个微处理器600或处理节点。在一个实施方案中,地址的相干性点是连接到存储与该地址对应的字节的存储器的存储器控制器620。存储器控制器620包括用于与存储器介接的控制电路和用于对存储器请求进行排队的请求队列。
53.高速缓存存储器子系统614a-614b和618使用高速度高速缓存存储器来存储数据块。在一些实施方案中,高速缓存存储器子系统614a-614b集成在相应的处理器核心612a-612b中。另选地,高速缓存存储器子系统614a-614b根据需要以后侧高速缓存配置或内联配置连接到处理器核心612a-612b。在各种实施方案中,高速缓存存储器子系统614a-614b被实现为高速缓存的分层结构。如果需要,高速缓存(更接近处理器核心612a-612b(在分层结构中))集成到处理器核心612中。在一个实施方案中,高速缓存存储器子系统614a-614b各自表示l2高速缓存结构,并且共享高速缓存子系统618表示l3高速缓存结构。
54.处理器核心612a-612b包括用于根据预定义的通用指令集执行指令的电路,并且处理器核心612a-612b支持同步多线程。在各种实施方案中,处理器核心612a-612b具有与处理器核心100(图1)相同的功能。类似地,线程限流单元613a-613b(或ttu 613a-613b)具有与线程限流单元150(图1)和线程限流单元200(图2)相同的功能。处理器核心612a-612b执行的多个线程共享至少共享高速缓存存储器子系统618、图形处理单元(gpu)650和耦接的i/o设备。
55.在各种实施方案中,使用软件应用的程序指令来实施先前描述的方法和/或机制。程序指令以高级编程语言(诸如c)描述硬件的行为。另选地,使用硬件设计语言(hdl),诸如verilog。程序指令存储在非暂时性计算机可读存储介质上。众多类型的存储介质是可用的。所述存储介质可由计算系统在使用期间存取以将程序指令和伴随的数据提供给所述计算系统进行程序执行。计算系统至少包括一个或多个存储器和执行程序指令的一个或多个处理器。
56.应该强调,上述实施方案仅为实现方式的非限制性示例。一旦充分了解上述公开内容,许多变型和修改将对本领域技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变型和修改。