首页> 中国专利> 多线程处理器中的性能优先化

多线程处理器中的性能优先化

摘要

根据本发明的一个实施例,揭示了一种方法:选择高速缓存中多个高速缓存通道的第一个子集,用于存储被识别为高优先级硬件线程的硬件线程,以由与所述高速缓存通信的多线程处理器对所述被识别为高优先级硬件线程的硬件线程进行处理;将高优先级硬件线程分配给所选择的第一个子集;监控被分配给多个高速缓存通道中所选择的第一个子集的高优先级硬件线程的高速缓存使用;以及基于所述监控步骤,如果所述高优先级硬件线程的高速缓存使用超出预定的非活动高速缓存使用门限值,则将所分配的高优先级硬件线程重新分配给所述多个高速缓存通道中的任何高速缓存通道。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-22

    未缴年费专利权终止 IPC(主分类):G06F12/08 授权公告日:20120328 终止日期:20181207 申请日:20061207

    专利权的终止

  • 2012-03-28

    授权

    授权

  • 2009-01-21

    实质审查的生效

    实质审查的生效

  • 2008-11-26

    公开

    公开

说明书

技术领域

本发明实施例涉及多线程处理器,并且尤其涉及多线程处理器中的线程处理。

背景技术

可以将一个应用程序分成多个线程,其是指令序列,例如在计算机的中央处理单元(CPU)上执行的可执行单元。一般而言,首先通过操作系统将程序分成软件线程,然后将每一个软件线程映射或调度到CPU中对应的硬件线程上,其通常是CPU中的寄存器组。为了以更快的速率处理线程,可以使用多线程处理器,其可在特定时间同时接收和处理多个线程。

在软件线程创建期间,可以认为相比于其它线程,一些线程具有与它们关联的较高优先级。从而基于想要的性能特征,操作系统优先化(prioritize)软件线程。通过操作系统进行线程优先化的一种方法是由多处理系统现在使用的时间片(time-slice)方法。以这种方法,具有较高优先级的软件线程比具有较低优先级的线程更频繁地接收时间片,并且更趋向于被多处理系统使用,从而通常能达到较佳的性能。

然而在多处理系统使用中,前述优先化方法在多线程环境(其中在同时执行的线程中同等地竞争资源)中是无效的。当将优先化的软件线程映射到硬件线程中以由多线程处理器进行处理时,会出现问题。在当前,多线程处理器同等处理每一个硬件线程,而不管它们所分配的软件优先级如何,从而降低了初始操作系统优先化线程的效率。

在公知技术中这种缺点的一个原因在于多线程处理器的高速缓存(cache)系统。传统上已设计出用于操作高速缓存系统的高速缓存替换算法,用以为所有线程提供对称处理。然而,在对称的多处理系统中,同时执行硬件线程的多个任务(即,没有优先化)通常会损害性能,尤其对于通常由软件给出高优先级的实时线程而言。在很多例程维护任务(例如磁盘分区和病毒扫描)与实时任务(例如多媒体解码)同时运行时,这成为工作站和家庭工作室中的阻碍。

附图说明

图1示出了其中可以实现本发明示例性实施例的多线程处理器环境;

图2A-B示出了本发明的示例性实施例;

图3是示出根据本发明的示例性实施例的过程的流程图;

图4是进一步示出图3中所示的示例性过程的流程图;

图5是图2A-B中所示的本发明的示例性实施例的电路图。

具体实施方式

一般而言,本发明的实施例涉及用于在多线程处理器中进行性能优先化的系统和方法。这里,本发明的实施例可应用于在多种计算设备中使用的多线程处理器,一般认为所述计算设备是固定式或便携式电子设备。计算设备的例子包括但不限于以下设备:计算机、工作站。例如,一般认为计算设备是任何类型的固定式或便携式电子设备,例如机顶盒、无线电话、数字视频录像机(DVR)、网络设备(例如路由器、服务器等)等等。

为了彻底理解本发明的多个实施例,在下文中将阐述某些细节,但本发明实施例也可以通过不同于所示出的那些实施例的很多实施例来实现。为了避免使该说明书变得难以理解,并没有详细阐述公知的逻辑和操作。

在以下的描述中,使用某些词语来描述本发明的各个实施例的特征。例如,词语“多线程处理器”包括同时处理两个或多个数据线程的任何设备。词语“软件线程”指的是指令序列,例如可执行单元,这是通过将软件程序分成这些指令序列而得到的,然后可以在计算设备的处理器(例如中央处理单元(CPU))上执行指令序列。词语“硬件线程”指的是处理器中的一组寄存器或其它存储介质,软件线程可以映射或调度到所述硬件线程上。

词语“软件”一般表示可执行的代码,例如操作系统、应用程序、小应用程序(applet)、例程或甚至一个或多个指令。软件可以存储于任何类型的存储器(即合适的存储介质)中,例如可编程的电子电路、半导体存储器设备、易失性存储器(例如随机存取存储器等)、非易失性存储器(例如只读存储器、闪存等)、软盘、光盘(例如高密度盘(compact disk)或数字通用盘“DVD”)、硬盘驱动、磁带或任何互连类型(以下将定义)。

参考图1,示出了多线程处理器环境1,例如计算机或工作站的多线程处理器环境,其中可以实现本发明的示例性实施例。如图1所示,多线程处理器环境1包括软件101和关联硬件102。软件101包括一个或多个应用程序103和操作系统104。硬件102包括多线程处理器子系统107,其具有与处理器106(例如处理器核)通信的高速缓存子系统105。如上所述,在应用程序103执行期间,操作系统将待由应用程序103执行的任务分成软件线程10,例如ST_1到ST_N(N>1),其是指令序列,例如可执行单元。如图1所示,然后将每一个软件线程10映射或调度到对应的硬件线程11上,例如HT_1到HT_N(N>1),其一般是寄存器组,然后通过处理器106处理(例如同时处理)软件线程。如图1所示,由硬件线程分配子系统200和高速缓存使用监控子系统210控制在处理器106和高速缓存子系统105之间的关于硬件线程11的处理的互动,下面将结合图2A-B对其进行详细描述。

图2A-B示出了本发明的示例性实施例。为了便于说明,处理器106是双线程处理器,但能够处理任何线程数目的其它处理器也预期在本发明的示例性实施例的范围内。如图2A所示,高速缓存子系统105,例如经由从高速缓存子系统105读取数据并将数据写入高速缓存子系统105的信号203,以及经由用于处理硬件线程11的信号205、206和201,与处理器106进行通信。高速缓存子系统105还包括数据阵列250,数据阵列250包括多个高速缓存通道(cache way)251,例如way_0至way_n(n>1),用于存储来自硬件线程11的数据。多线程处理器子系统107还包括硬件线程分配子系统200,其利用高速缓存通道选择逻辑子系统(CSL)202来选择高速缓存通道251的子集以存储来自硬件线程11的数据,将所述硬件线程11识别为由处理器106处理的高优先级硬件线程11,如结合图5详细描述的。基于高速缓存通道选择逻辑子系统202的选择,硬件线程分配子系统200将高优先级硬件线程11分配给选择用于存储高优先级硬件线程11的高速缓存通道251的子集。

如图2A进一步示出的,多线程处理器子系统107还包括高速缓存使用监控子系统210,其与高速缓存子系统105通信并监控高优先级硬件线程11(所述高优先级硬件线程11例如HT_1被分配给选择用于存储来自高优先级硬件线程11的数据的高速缓存通道251的子集),以及将所监控的高优先级硬件线程HT_1的高速缓存使用与预定的高速缓存使用门限值相比较,如下文结合图3-5所详细描述的。如果高优先级硬件线程HT_1的高速缓存使用超出了预定的高速缓存使用非活动门限值,则硬件线程分配子系统200可将所分配的高优先级硬件线程HT_1重新分配给高速缓存通道251之一。在这个重新分配之后,硬件线程分配子系统200忽视对高速缓存通道251的子集进行选择以存储来自高优先级硬件线程11的数据,并可将硬件线程HT_1重新分配给数据阵列250中的任何一个高速缓存通道251。如果在重新分配之后硬件线程HT_1将重新占用活动的高速缓存的使用,则将中止重新分配并且自动重新启动上述基于线程的选择。

图3是结合图2A-B示出根据本发明的示例性实施例的过程的流程图。如图3所示,该过程开始于方框300,并进行到确定方框310,在确定方框310中判断是否至少一个高速缓存通道251没有容纳(host)硬件线程11(例如,在其中没有存储相关数据)。如图2A所示,高速缓存子系统105包括状态阵列270,其保持一组值271,例如value_0至value_n(n>1),每一个值271对应于数据阵列250中的高速缓存通道251。每一个值271例如value_0指示对应的高速缓存通道251例如way_0是否容纳硬件线程11。适当地,值271包括具有一个值的二进制值,例如1指示对应的高速缓存通道251“有效”(例如,其容纳硬件线程11),另一个值例如0指示高速缓存通道251“无效”(例如,其没有容纳硬件线程11)。

如果在方框310中,确定所有高速缓存通道251容纳了硬件线程11,则流程进行到方框320,在方框320中高速缓存通道251的子集被选择用于存储硬件线程11,所述硬件线程11被识别为(例如通过操作系统104识别)由处理器106处理的高优先级硬件线程11。

如图2A所示,高速缓存子系统105包括替换策略阵列(replacementpolicy array,RPA)240,其确定将特定的硬件线程11分配给哪个高速缓存通道251。在本发明的示例性实施例中,将高优先级线程屏蔽(threadmask)230用于改变RPA 240的选择,从而留出(set aside)高速缓存通道251的子集仅用于高优先级硬件线程11。适当地,留出仅用于高优先级硬件线程11的高速缓存通道251的数目大于状态阵列250中高速缓存通道251总数的一半。适当地,高优先级线程屏蔽230是产生信号232的位串,当将其应用到RPA 240的确定信号(decision signal)241的位时,使得RPA 240仅指向高速缓存通道251的子集。适当地,高优先级线程屏蔽230包括用于存储高优先级屏蔽位的一个或多个寄存器(未示出)。

图2B示出了将高优先级线程屏蔽230应用到RPA 240的确定信号241的例子。为了便于说明,RPA 240对八通道高速缓存(way_0到way_7)使用伪LRU算法(PLRU),并且将7位(B0到B7)高优先级线程屏蔽230应用到该八通道高速缓存。在这个例子中,在使能(enable)高优先级线程屏蔽230并且存在请求206(图2A所示)以通过高优先级硬件线程11填充高速缓存通道250的任何时候,将高优先级线程屏蔽230的多个位应用到PLRU位,例如由确定树2象征性示出的那样。(基于本领域所公知的原理)应用预定的高优先级线程屏蔽230导致PLRU的位1(如树2中所示出)偏向(bias)0,并且最后使得way_2到way_7仅对高优先级硬件线程11可用。从而通过基于PLRU位预定高优先级线程屏蔽230的位以实现上述结果,包括way_2至way_7的高速缓存通道的子集280被留出以仅用于高优先级硬件线程11。因此图3中方框320的过程实现了倾向高优先级线程11的RPA240的确定中的偏向,从而对高优先级硬件线程11增加了高速缓存子系统105的资源可用性。

低优先级线程屏蔽220可类似地应用到低优先级线程11,如图2A-B所示,从而高速缓存通道251的子集被留出以仅用于低优先级硬件线程11。适当地,低优先级线程屏蔽220是产生信号222的位串,当应用到RPA 240的确定信号241的位时,使得RPA 240仅指向高速缓存通道251的子集。适当地,低优先级线程屏蔽230包括用于存储低优先级屏蔽位的一个或多个寄存器(未示出)。以上述方式将预定的低优先级线程屏蔽220应用到图2B的例子使得way_0和way_1仅对低优先级硬件线程11可用。以这种方式,包括way_0和way_1的高速缓存通道的子集281被留出以仅用于低优先级硬件线程11。适当地,使用低优先级线程屏蔽220和高优先级线程屏蔽230,从而使用两个选择的子集降低了低优先级硬件线程11与高优先级硬件线程11平等共享高速缓存子系统105的机会,同时由于为高优先级硬件线程11对所有的高速缓存通道251进行偶然选择(accidental selection),就确保了低优先级硬件线程11没有完全被排除。适当地,例如经由从人用户接收的指令编程,低优先级线程屏蔽220和高优先级线程屏蔽230中的至少一个是可编程的。对低优先级线程屏蔽220和高优先级线程屏蔽230的编程依赖于由RPA 240使用的特定替换算法。

在另一个示例性实施例中,可以对低优先级线程屏蔽220和高优先级线程屏蔽230编程,从而它们各自的低优先级和高优先级子集共享至少一个高速缓存通道251,该高速缓存通道251可用于存储低优先级硬件线程11和高优先级硬件线程11。例如,在图2B的例子中,可能以如下方式对低优先级线程屏蔽220和高优先级线程屏蔽230编程,该方式是由低优先级和高优先级硬件线程11共享way_0和way_1,way_2和way_3被保留以仅用于低优先级硬件线程11,而way_4到way_7被保留以仅用于高优先级硬件线程11。适当地,对高速缓存通道251的每一个低优先级和高优先级子集的选择是可编程的,并且基于接收的线程ID205在每一个硬件线程11的基础上被执行。适当地,为每一个低优先级和高优先级子集选择的高速缓存通道251的数目也是可编程的。

返回图3,流程然后进行到方框330,其中将高优先级硬件线程11分配给在方框320中选择的仅用于高优先级硬件线程11的高速缓存通道251的子集。接下来,在方框340中,例如通过图2A所示并且结合图4在下文详细描述的高速缓存使用监控子系统210,对分配给在方框320中选择的高速缓存通道251的子集的高优先级硬件线程11(例如HT_1)的高速缓存使用进行监控。

图4是示例性流程图,其结合图2A进一步示出了图3的方框340中所示的监控过程。如图4所示,该过程开始于方框400,并进行到确定方框410,在确定方框410中,高速缓存使用监控子系统210判断所分配的高优先级硬件线程HT_1是否处于非活动的高速缓存使用状态。适当地,高速缓存使用监控子系统210包括图2A所示的硬件线程活动状态子系统212,其基于从处理器106接收的线程ID 205,监控高优先级硬件线程11的活动。如果确定高优先级硬件线程HT_1不处于非活动状态(确定方框410),则流程返回到确定方框410,并继续以前述方式循环,直到高优先级硬件线程HT_1已由处理器106处理为止。

如果在确定方框410中,确定高优先级硬件线程HT_1处于非活动状态,则流程进行到方框420,在方框420中测量非活动高速缓存使用状态时间段,其是高优先级硬件线程HT_1保持非活动高速缓存使用状态的时间。流程然后进行到方框430,在方框430中将所测量的时间段与预定的非活动高速缓存使用门限值相比较。接下来,在确定方框440中,如果确定所测量的时间段没有超出预定的非活动高速缓存使用门限值,则流程返回到确定方框410。如果确定所测量的时间段超出预定的高速缓存使用门限值(确定方框440),则过程返回到图3的方框340。适当地,基于时钟周期(未示出),通过图2A所示的硬件线程活动逻辑子系统211执行方框420中对非活动高速缓存使用状态时间段的测量。硬件线程活动逻辑子系统211包括计数器213,其用以基于所测量的时钟周期增加计数,该计数对应于高优先级硬件线程11例如HT_1保持非活动高速缓存使用状态的时间段。适当地,所测量的时间段包括该计数。然后硬件线程活动逻辑子系统211将所测量的时间段与预定的非活动高速缓存使用门限值进行比较,并判断所测量的时间段是否超出预定的非活动高速缓存使用门限值。适当地,硬件线程活动逻辑子系统211可以以多种软件或硬件实施来实现。

返回到图3,流程进行到方框350,在方框350中,如果基于图4的确定方框440的结果,即基于监控操作确定高优先级硬件线程HT_1的高速缓存使用超出预订的非活动高速缓存使用门限值(例如,确定HT_1的非活动时间段超出可接受的时间段),则将高优先级硬件线程HT_1重新分配给另一个高速缓存通道251。重新分配所分配的高优先级硬件线程HD_1则包括例如经由改变图2A所示的低优先级线程屏蔽220和高优先级线程屏蔽230的各自的使能位221和231中的值,对低优先级线程屏蔽220和高优先级线程屏蔽230去能(disable)。该去能操作允许将HT_1重新分配给另一个高速缓存通道251,而没有限制由低优先级线程屏蔽220和高优先级线程屏蔽230的应用程序所使用的子集。如图2A所示,然后通过硬件线程分配子系统200选择高速缓存通道251例如容纳HT_1的way_0作为牺牲通道(victimway),并且高速缓存通道251可用于另一个硬件线程11。适当地,硬件线程分配子系统200将牺牲通道信号201传输给数据阵列250以及标签阵列260,以使得way_0可用于另一个硬件线程11。适当地,标签阵列260保持一组索引261,例如index_0至index_n(n>1),使每一个索引261对应于数据阵列250中的高速缓存通道251。然后通过硬件线程分配子系统200将HT_1重新分配给高速缓存通道251。接着流程进行到方框370,在方框370中整个流程结束。

返回到确定方框310,如果确定一个或多个高速缓存通道251没有容纳硬件线程11,则流程进行到方框360,在方框360中将高优先级硬件线程11分配给没有容纳硬件线程11的高速缓存通道251。适当地,在确定方框310中,如果一个或多个高速缓存通道251没有容纳硬件线程11,则状态阵列270例如经由信号272通知硬件线程分配子系统200,从而流程可进行到方框360。接下来,在方框360中,基于硬件线程分配子系统200将高优先级硬件线程11分配给没有容纳硬件线程11的高速缓存通道251,状态阵列270例如经由信号273为硬件线程分配子系统200提供关于没有容纳硬件线程11的高速缓存通道251的信息。接着流程进行到方框370,在方框370中整个过程结束。需要明白的是,根据期望的软件或硬件实施考虑,方框310和360中的操作可以在方框320至350中的操作之前或之后执行。适当地,多线程处理器环境1包括提供软件的存储介质(未示出),如果该软件由多处理器子系统107执行,则使得多处理器子系统107执行上述图3和图4的操作。适当地,在多处理器子系统107内实施存储介质。

图5是图2所示的硬件线程分配子系统200的电路图。现在将参考上述图3和图4的操作来讨论硬件线程分配子系统200的电路的整个操作。如上文结合图2A和图3的方框320所描述的,多线程处理器子系统107包括用以选择高速缓存通道251子集的高速缓存通道选择逻辑子系统202,高速缓存通道251的子集用以存储被识别为由处理器106进行处理的高优先级硬件线程10的硬件线程11。如图5所示,高速缓存通道选择逻辑子系统202可将用以产生信号232的高优先级线程(HPM)屏蔽230的位串和用以产生信号222的低优先级线程(LPM)屏蔽220的位串作为输入接收。接着在多路复用器500中接收信号222和223,多路复用器500选择高优先级线程屏蔽230或低优先级线程屏蔽220。适当地,通过多路复用器500进行的选择是基于所接收的线程ID信号的,其表示来自硬件线程11的请求的低或高优先级的特征。接着将所选择的信号504经由与门510施加到RPA 240的确定信号241的多个位,使得RPA 240仅指向高速缓存通道251的子集。

然后将产生的信号511从高速缓存通道选择逻辑子系统202输出到多路复用器520,多路复用器520然后选择通过RPA 240原始选择的高速缓存通道251(如信号241表示的)或通过应用所选择的高优先级线程屏蔽230或低优先级线程屏蔽220之一所偏向选择的高速缓存通道251(如信号511表示的)。基于所接收的表示高优先级线程屏蔽230或低优先级线程屏蔽220是否已被使能的使能(EN)信号521来做出选择。如上文结合图3的方框350的描述,使高优先级线程屏蔽230或低优先级线程屏蔽220去能的决定依赖于关于所分配的高优先级硬件线程11例如HT_1的重新分配决定。接下来,将多路复用器520的输出馈入牺牲通道确定逻辑方框530,以判断哪个高速缓存通道251可用于容纳进入的硬件线程11。适当地,牺牲通道确定逻辑方框530可以以多种软件或硬件实施来实现。所述高速缓存通道251的判断依赖于选择是基于RPA 240所原始选择的高速缓存通路251进行的还是基于多路复用器520所偏向选择的高速缓存通道251进行的,所述多路复用器520的选择是基于使能信号521的。然后将牺牲通道确定逻辑方框530的输出输入到多路复用器540。

多路复用器540然后以上文结合图3中确定方框310描述的方式在牺牲通道531或牺牲通道273之间做出选择,牺牲通道531经由上述对应于图3的方框320至350的过程确定,牺牲通道273基于高速缓存通道251是否没有容纳硬件线程11而确定。来自状态阵列270的选择信号272确定由多路复用器540做出的选择。如上文结合图3的方框310和360的描述,如果一个高速缓存通道251没有容纳硬件线程11,则选择这个高速缓存通道251,从而多路复用器540从状态阵列选择输入273作为其输出。否则,选择输入531。如上所述,多路复用器540的操作可以在高速缓存通道选择逻辑子系统550的那些操作之前或任何之后点执行,这依赖于所期望的软件或硬件实施考虑。

需要注意的是,分别论述的前述实施例的多种特征仅为了进行清楚的说明,可以将它们整体或部分地并入具有所有或一部分这些特征的本发明的单个实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号