CN112099974B - 多线程处理器系统及访存带宽控制方法 - Google Patents
多线程处理器系统及访存带宽控制方法 Download PDFInfo
- Publication number
- CN112099974B CN112099974B CN202010992582.1A CN202010992582A CN112099974B CN 112099974 B CN112099974 B CN 112099974B CN 202010992582 A CN202010992582 A CN 202010992582A CN 112099974 B CN112099974 B CN 112099974B
- Authority
- CN
- China
- Prior art keywords
- token
- llc
- memory
- unit
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种多线程处理器系统及访存带宽控制方法,包括:多级高速缓存cache,多级cache包括最后一级高速缓存LLC;LLC配置有第一缺失访存队列以及第一监控单元,第一缺失访存队列用于存储缺失访存请求;第一监控单元用于检测第一缺失访存队列中每个线程生成的访存请求的占比;当存在一目标线程生成的访存请求的第一占比超过第一设定阈值时,第一监控单元用于根据第一占比,确定第一限制度;第一监控单元用于将第一限制度发送给LLC的上一级存储单元。通过先明确出需要被限制的目标线程,然后再在LLC的上一级存储单元对目标线程生成的访存请求进行限制,在降低线程间干扰的同时,避免了在高级别的cache中对访存带宽进行带宽管理常常出现的不精确的问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种多线程处理器系统及访存带宽控制方法。
背景技术
在多核多线程处理器中,支持服务质量(Quality of Service,简称QoS)的缓存cache带宽管理能够使程序更有秩序的执行。QoS通过限制低优先级的线程占有的带宽资源,从而为高优先级的线程提供更好的服务。通常来说,低优先级的线程生成的访存请求往往在多级cache中均缺失,而高优先级的线程生成的访存请求可能在多级cache中的高级别的cache中命中。
若要对访存带宽进行精确地带宽管理,往往需要在最后一级高速缓存(Lastlevel cache,简称LLC)中进行限制,而非在高级别的cache中进行;理由是在高级别的cache中的访存请求可能会在多级cache中命中,而不会由LLC向下级存储单元发送,而LLC向下级存储单元发送的访问带宽才是待被带宽管理的访存带宽。
然而,在LLC中对低优先级线程进行限制,反而使得低优先级线程生成的访存请求常常占有LLC中的各种资源,从而导致高优先级线程的可用资源较少,甚至因为资源被占用而导致高优先级线程生成的访存请求被阻塞。
发明内容
本申请实施例的目的在于提供一种多线程处理器系统及访存带宽控制方法,用以改善现有技术中在LLC中对低优先级线程进行限制导致的对高优先级线程产生干扰的问题。
第一方面,本申请实施例提供了一种多线程处理器系统,包括多级高速缓存cache,所述多级cache包括最后一级高速缓存LLC;所述LLC配置有第一缺失访存队列以及第一监控单元,所述第一缺失访存队列用于存储缺失访存请求,其中,所述缺失访存请求为欲访存的数据在所述LLC缺失的访存请求,所述缺失访存请求携带有身份信息,所述身份信息包括表征该缺失访存请求来自的线程的线程标识;所述第一监控单元用于检测所述第一缺失访存队列中每个线程生成的访存请求的占比占比;当存在一目标线程生成的访存请求在所述第一缺失访存队列中的第一占比超过第一设定阈值占比时,所述第一监控单元用于根据所述第一占比,确定针对所述目标线程的第一限制度占比;所述第一监控单元用于将所述第一限制度发送给所述LLC的上一级存储单元,以使所述LLC的上一级存储单元根据所述第一限制度,在所述LLC的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
在上述的实施方式中,通过监控LLC中每个线程生成的访存请求在缺失访存队列的占比是否超过设定阈值,对占比超过设定阈值的线程,计算出该线程对应的LLC的上一级存储单元的限制度,并将该限制度发送给上述的上一级存储单元,使得上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。通过先明确出需要被限制的目标线程,然后再在LLC的上一级存储单元对目标线程生成的访存请求进行限制,在降低线程间干扰的同时,避免了在高级别的cache中对访存带宽进行带宽管理常常出现的不精确的问题。
在一个可能的设计中,所述LLC还配置有多个第一令牌生成单元,所述多个第一令牌生成单元与所述LLC支持的多个线程一一对应;每个所述第一令牌生成单元用于根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述LLC用于每消耗一个令牌,便控制所述第一缺失访存队列向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列中由生成所述令牌的第一令牌生成单元对应的线程所生成的访存请求。
在上述的实施方式中,第一令牌生成单元根据自身对应的线程的带宽控制值,计算生成令牌的周期,并按照计算出的周期生成令牌,而LLC每消耗一个令牌,才会控制第一缺失访存队列向下级存储单元发送令牌对应的缺失访存请求,该缺失访存请求由生成上述令牌的第一令牌生成单元对应的线程生成。因此,便实现了依据带宽控制值对相应的线程的访存请求的发送进行控制。带宽控制值反映了线程的优先级,通过上述方式便能够实现对不同优先级的线程生成的访存请求进行区别对待,从而提升整个多线程处理器系统的处理效率。
在一个可能的设计中,所述多级cache包括除所述LLC以外的至少一个非LLC级cache,所述至少一个非LLC级cache中的每个非LLC级cache均配置有各自的第二缺失访存队列以及第二监控单元,所述第二缺失访存队列用于存储缺失访存请求,其中,所述缺失访存请求为欲访存的数据在所述非LLC级cache缺失的访存请求;所述第二监控单元用于检测所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比占比;当所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比超过第二设定阈值占比时,所述第二监控单元用于根据所述第二占比,确定针对所述目标线程的第二限制度占比;所述第二监控单元用于将所述第二限制度发送给所述非LLC级cache的上一级存储单元,以使所述非LLC级cache的上一级存储单元根据所述第二限制度,在所述非LLC级cache的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
在上述的实施方式中,通过第二监控单元监控目标线程生成的访存请求在所述第二缺失访存队列的第二占比是否超过第二设定阈值,若第二占比依然超过第二设定阈值,计算出该非LLC级cache的目标线程对应的上一级存储单元的限制度,并将该限制度发送给该非LLC级cache的上一级存储单元,使得该非LLC级cache上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。若在该非LLC级cache的第二缺失访存队列中,目标线程生成访存请求依然超过第二设定阈值,则表示在该非LLC级cache也有可能出现干扰高优先级线程生成的访存请求的风险,因此,可以对目标线程对应的上一级存储单元进行限制,从而转嫁在该非LLC级cache产生的压力。
在一个可能的设计中,每个所述非LLC级cache均配置有多个第二令牌生成单元,所述多个第二令牌生成单元与所述非LLC级cache支持的多个线程一一对应;非LLC级cache配置的多个第二令牌生成单元中的与所述目标线程对应的第二令牌生成单元用于接收下一级cache发送的限制度;所述第二令牌生成单元用于根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述非LLC级cache用于每消耗一个所述目标线程对应的第二令牌生成单元生成的令牌,便控制所述第二缺失访存队列向下一级cache发送一个所述目标线程生成的缺失访存请求。
在上述的实施方式中,由于第二令牌生成单元与线程一一对应,因此,可以针对性的对目标线程对应的第二令牌生成单元的生成令牌的速度进行限制,具体通过改变第二令牌生成单元生成令牌的周期的方式来实现。具体通过接收下一级cache发送的限制度来改变本级cache生成令牌的周期,从而可以减缓下一级cache中高优先级的线程生成的访存请求与低优先级的线程生成的访存请求相互干扰的压力。
在一个可能的设计中,所述多线程处理器系统还包括处理器核,所述处理器核与所述多级cache相通信,所述处理器核包括指令发射单元,所述指令发射单元包括指令发射逻辑单元和多个第三令牌生成单元,所述多个第三令牌生成单元的数量与所述处理器核支持的多个线程一一对应;所述多个第三令牌生成单元中的与所述目标线程对应的第三令牌生成单元用于接收下一级cache发送的限制度;所述第三令牌生成单元用于根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述指令发射单元用于每消耗一个所述目标线程对应的第三令牌生成单元生成的令牌,便控制所述指令发射逻辑单元向下级cache发送一个所述目标线程生成的访存请求。
在上述的实施方式中,可以根据处理器核的下一级cache发送来的限制度,直接在处理器核的环节对目标线程生成的访存请求进行限制,由于限制度是从LLC开始,对同一目标线程逐层限制上来的,因此在处理器核中对该目标线程的限制是准确的,即该目标线程生成的访存请求会由LLC向下级存储单元发送,而不会在多级cache中命中该访存请求欲访问的数据,在降低了低级别cache中线程之间相互干扰的同时,保证了带宽管理的精确性。
第二方面,本申请实施例提供了一种访存带宽控制方法,应用于第一方面以及第一方面的任一可实施方式的多线程处理器系统,用于对所述多线程处理器系统的访存带宽进行限制,所述方法包括:所述第一监控单元检测所述第一缺失访存队列中每个线程生成的访存请求的占比;若存在一目标线程生成的访存请求在所述第一缺失访存队列中的第一占比超过第一设定阈值,所述第一监控单元根据所述第一占比,确定针对所述目标线程的第一限制度;所述第一监控单元将所述第一限制度发送给所述LLC的上一级存储单元,以使所述LLC的上一级存储单元根据所述第一限制度,在所述LLC的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
在上述的实施方式中,通过监控LLC中每个线程生成的访存请求在缺失访存队列的占比是否超过设定阈值,对占比超过设定阈值的线程,计算出该线程对应的LLC的上一级存储单元的限制度,并将该限制度发送给上述的上一级存储单元,使得上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。通过先明确出需要被限制的目标线程,然后再在LLC的上一级存储单元对目标线程生成的访存请求进行限制,在降低线程间干扰的同时,避免了在高级别的cache中对访存带宽进行带宽管理常常出现的不精确的问题。
在一个可能的设计中,所述LLC还配置有多个第一令牌生成单元,所述多个第一令牌生成单元与所述LLC支持的多个线程一一对应;在所述第一监控单元检测所述第一缺失访存队列中每个线程生成的访存请求的占比之前,所述方法还包括:每个所述第一令牌生成单元根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述LLC每消耗一个令牌,便控制所述第一缺失访存队列向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列中由生成所述令牌的第一令牌生成单元对应的线程所生成的访存请求。
在上述的实施方式中,第一令牌生成单元根据自身对应的线程的带宽控制值,计算生成令牌的周期,并按照计算出的周期生成令牌,而LLC每消耗一个令牌,才会控制第一缺失访存队列向下级存储单元发送令牌对应的缺失访存请求,该缺失访存请求由生成上述令牌的第一令牌生成单元对应的线程生成。因此,便实现了依据带宽控制值对相应的线程的访存请求的发送进行控制。带宽控制值反映了线程的优先级,通过上述方式便能够实现对不同优先级的线程生成的访存请求进行区别对待,从而提升整个多线程处理器系统的处理效率。
在一个可能的设计中,所述多级cache包括除所述LLC以外的至少一个非LLC级cache,所述至少一个非LLC级cache中的每个非LLC级cache均配置有各自的第二缺失访存队列以及第二监控单元,所述第二缺失访存队列用于存储缺失访存请求,其中,所述缺失访存请求为欲访存的数据在所述非LLC级cache缺失的访存请求;所述方法还包括:所述第二监控单元检测所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比;若所述占比目标线程生成的访存请求在所述第二缺失访存队列的第二占比超过第二设定阈值,所述第二监控单元根据所述占比第二占比,确定针对所述目标线程的第二限制度;所述第二监控单元将所述第二限制度发送给所述非LLC级cache的上一级存储单元,以使所述非LLC级cache的上一级存储单元根据所述第二限制度,在所述非LLC级cache的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
在上述的实施方式中,通过第二监控单元监控目标线程生成的访存请求在所述第二缺失访存队列的第二占比是否超过第二设定阈值,若第二占比依然超过第二设定阈值,计算出该非LLC级cache的目标线程对应的上一级存储单元的限制度,并将该限制度发送给该非LLC级cache的上一级存储单元,使得该非LLC级cache上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。若在该非LLC级cache的第二缺失访存队列中,目标线程生成访存请求依然超过第二设定阈值,则表示在该非LLC级cache也有可能出现干扰高优先级线程生成的访存请求的风险,因此,可以对目标线程对应的上一级存储单元进行限制,从而转嫁在该非LLC级cache产生的压力。
在一个可能的设计中,每个所述非LLC级cache均配置有多个第二令牌生成单元,所述多个第二令牌生成单元与所述非LLC级cache支持的多个线程一一对应;在所述第二监控单元检测所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比之前,所述方法还包括:非LLC级cache配置的多个第二令牌生成单元中的与所述目标线程对应的第二令牌生成单元接收下一级cache发送的限制度;所述第二令牌生成单元根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述非LLC级cache每消耗一个所述目标线程对应的第二令牌生成单元生成的令牌,便控制所述第二缺失访存队列向下一级cache发送一个所述目标线程生成的缺失访存请求。
在上述的实施方式中,由于第二令牌生成单元与线程一一对应,因此,可以针对性的对目标线程对应的第二令牌生成单元的生成令牌的速度进行限制,具体通过改变第二令牌生成单元生成令牌的周期的方式来实现。具体通过接收下一级cache发送的限制度来改变本级cache生成令牌的周期,从而可以减缓下一级cache中高优先级的线程生成的访存请求与低优先级的线程生成的访存请求相互干扰的压力。
在一个可能的设计中,所述多线程处理器系统还包括处理器核,所述处理器核与所述多级cache相通信,所述处理器核包括指令发射单元,所述指令发射单元包括指令发射逻辑单元和多个第三令牌生成单元,所述多个第三令牌生成单元的数量与所述处理器核支持的多个线程一一对应;所述方法还包括:所述多个第三令牌生成单元中的与所述目标线程对应的第三令牌生成单元接收下一级cache发送的限制度;所述第三令牌生成单元根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;所述指令发射单元每消耗一个所述目标线程对应的第三令牌生成单元生成的令牌,便控制所述指令发射逻辑单元向下级cache发送一个所述目标线程生成的访存请求。
在上述的实施方式中,可以根据处理器核的下一级cache发送来的限制度,直接在处理器核的环节对目标线程生成的访存请求进行限制,由于限制度是从LLC开始,对同一目标线程逐层限制上来的,因此在处理器核中对该目标线程的限制是准确的,即该目标线程生成的访存请求会由LLC向下级存储单元发送,而不会在多级cache中命中该访存请求欲访问的数据,在降低了低级别cache中线程之间相互干扰的同时,保证了带宽管理的精确性。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的多线程处理器系统的示意性结构框图;
图2示出了本申请实施例提供的多线程处理器系统的一种具体实施方式的示意性结构框图;
图3示出了本申请实施例提供的访存带宽控制方法的一种具体实施方式的流程示意图;
图4示出了本申请实施例提供的访存带宽控制方法的一种具体实施方式的部分步骤的流程示意图;
图5示出了本申请实施例提供的访存带宽控制方法的另一种具体实施方式的流程示意图;
图6示出了本申请实施例提供的访存带宽控制方法的另一种具体实施方式的部分步骤的流程示意图;
图7示出了本申请实施例提供的访存带宽控制方法的又一种具体实施方式的流程示意图。
具体实施方式
对照实施例,传统支持QoS的cache带宽管理若要对访存带宽进行带宽管理,往往是在LLC中进行。其中,访存带宽指的是LLC对下级存储单元的访问的带宽。在LLC中对访存带宽进行带宽管理,通常需要限制低优先级线程生成的访存请求的发送。然而,LLC往往是多个处理器核多线程共享的,在LLC中对低优先级线程进行限制,反而使得低优先级线程生成的访存请求长期占据LLC中的各种资源,造成高优先级线程受到干扰。例如,在LLC中,低优先级线程生成的访存请求往往会长期存放在缺失缓存队列MissQueue或请求缓存队列ReqQueue中,导致高优先级线程的可用资源较少。其中,MissQueue用于存放待发往下一级存储单元的访存请求,ReqQueue用于存放从上一级cache接收到的访存请求。
若要在高级别的cache中对访存带宽进行带宽管理,如在高级别的cache中限制低优先级的线程生成的访存请求的发送,往往是不精确的。因为被限制的访存请求有可能在LLC或LLC的上级cache中命中,而不会由LLC向下级存储单元发送。
本申请实施例提供的多线程处理器系统及访存带宽控制方法通过先明确出需要被限制的目标线程,然后再在LLC的上一级存储单元对目标线程生成的访存请求进行限制,在降低线程间干扰的同时,避免了在高级别的cache中对访存带宽进行带宽管理常常出现的不精确的问题。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参见图1,图1示出了本申请实施例提供的多线程处理器系统,该系统包括多级cache以及处理器核,多级cache与处理器核相通信,处理器核支持多个线程。
多级cache包括LLC 100以及除LLC以外的多个非LLC级cache 200(图1中仅示出一个非LLC级cache 200作为示例)。不妨设多级cache有m个层级,则多级cache包括一级cache、二级cache…m级cache,其中,多级cache中的最后一级cache被记为LLC,即在图1示出的多线程控制器系统中,m级cache为LLC,则非LLC级cache 200共有m-1个。
处理器核支持的多个线程中的任一线程均可以在处理器核的时钟周期内生成若干数量个访存请求,其中,访存请求为在存储单元中访问目标数据的指令。该访存请求会优先在高级别cache中查找欲访问的目标数据是否被缓存,若上述的目标数据未缓存在高级别cache,则称上述的目标数据在高级别cache“缺失”(Miss);若上述的目标数据缓存在高级别cache,则称上述的目标数据在高级别cache“命中”(Hit)。
请参见图1,某线程在处理器核的当前时钟周期生成的访存指令会优先在一级cache中查找欲访问的目标数据,若在一级cache中未查找到欲访问的目标数据,判定一级cache缺失,并由一级cache将该访存指令发往二级cache;该访存指令在二级cache中继续查找欲访问的目标数据,若在二级cache中仍未查找到欲访问的目标数据,判定二级cache缺失,并由二级cache将该访存指令发往三级cache…依次类推,直到m-1级cache缺失,该访存指令被m-1级cache发送到m级cache,即LLC。若LLC依然缺失,则LLC会将该访存指令向下级存储单元发送,LLC向下级存储单元发送的访存指令会占用访存带宽。被生成的访存指令携带有身份信息SrcID,SrcID包括处理器核标识Core ID和线程标识TID,其中,处理器核标识Core ID为该访存指令来自的处理器核的标识,线程标识TID为该访存指令来自的线程的标识。
LLC 100配置有第一缺失访存队列101、第一监控单元102以及多个第一令牌生成单元103(图1中仅示出一个第一令牌生成单元103作为示例),第一监控单元102以及多个第一令牌生成单元103均与第一缺失访存队列101相通信。
第一缺失访存队列101用于存储缺失访存请求,存储在第一缺失队列中的缺失访存请求欲访存的数据在LLC缺失。
第一监控单元102根据访存请求的SrcID,确定各个访存请求来自的线程,并以线程作为监控单位,检测每个线程生成的缺失访存请求在第一缺失访存队列101中的占比。
在LLC支持的多个线程中,若第一监控单元102检测到某一线程生成的缺失访存请求的占比较高,超出了第一设定阈值,可以将该线程记为目标线程,第一监控单元102用于根据目标线程生成的缺失访存请求在第一缺失访存队列101中的占比,确定LLC的上一级存储单元的限制度。
可选地,目标线程的确定方法可以通过如下方式进行:
对于LLC支持的n个线程:x1,x2,x3…xn,n个线程中的每个线程均会生成访存请求。若访存请求欲访问的目标数据从高级别cache开始,直到LLC均缺失,则该访存请求会被存储在LLC的第一缺失访存队列101中,等待被向下级存储单元发送。
第一监控单元102用于获取第一缺失访存队列101中存储的缺失访存请求的总个数X,以及n个线程中每个线程对应的缺失访存请求的个数:线程x1在第一缺失访存队列101中对应的缺失访存请求的个数X1,线程x2在第一缺失访存队列101中对应的缺失访存请求的个数X2,线程x3在第一缺失访存队列101中对应的缺失访存请求的个数X3,…线程xn在第一缺失访存队列101中对应的缺失访存请求的个数Xn,其中,X=X1+X2+X3+…+Xn。
随后,第一监控单元102可以分别计算每个线程在第一缺失访存队列101中对应的缺失访存请求在第一缺失访存队列101中的占比,例如线程x1生成的缺失访存请求的占比为:X1/X;线程x2生成的缺失访存请求的占比为:X2/X;线程x3生成的缺失访存请求的占比为:X3/X……线程xn生成的缺失访存请求的占比为:Xn/X。
在计算出LLC支持的各线程生成的缺失访存请求在第一缺失访存队列101的占比后,可以将各个占比与第一设定阈值X0进行比较,若各线程中存在某一线程Xi,该线程对应的占比Xi/X大于第一设定阈值X0,便可以将该线程Xi记为目标线程。
可选地,LLC的上一级存储单元的限制度可以通过如下方式进行计算:
在一种具体实施方式中,在第一设定阈值之上存在有若干个占比区间,LLC的上一级存储单元的限制度的具体数值与占比区间存在映射关系,第一监控单元102可以根据目标线程生成的缺失访存请求在第一缺失访存队列101中的占比落入的占比区间,确定出该占比区间对应的限制度。
例如,在第一设定阈值之上存在有如下多个占比区间:(z1,z2],(z2,z3],(z3,z4],…,(zj,zj+1],共j个占比区间,每个占比区间均存在自身对应的限制度,第一监控单元102可以根据目标线程生成的缺失访存请求在第一缺失访存队列101中的占比落入的占比区间,确定出与该占比区间对应的限制度。
在另一种具体实施方式中,可以先计算出占比与第一设定阈值的差值,然后根据该差值落入的差值区间,确定出该差值区间对应的限制度。其中,可以存在多个差值区间,且LLC的上一级存储单元的限制度的具体数值与差值区间存在映射关系。
多个第一令牌生成单元103的数量与LLC支持的线程的数量相同,且多个第一令牌生成单元103与LLC支持的多个线程一一对应。
多个第一令牌生成单元103中的每个第一令牌生成单元103可以根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据自身生成令牌对比周期进行令牌的生成,其中,线程的带宽控制值可以由用户根据线程的优先级设定。
第一令牌生成单元103生成令牌的周期可以通过如下方式获得:
在一种具体实施方式中,线程的带宽控制值与第一令牌生成单元103生成令牌的周期可以存在映射关系,不妨设带宽控制值有多个带宽控制区间,分别为(a1,a2],(a2,a3],(a3,a4],…,(ai,ai+1],共i个带宽控制区间,每个带宽控制区间均有自身对应的第一令牌生成单元103生成令牌的周期。每个第一令牌生成单元103可以根据自身对应的线程的带宽控制值落入的带宽控制区间,确定出与该带宽控制区间对应的生成令牌的周期。
在另一种具体实施方式中,第一令牌生成单元103生成令牌的周期可以与访存请求的预设发送周期相同,访存指令的预设发送周期根据设定的带宽控制值获得。
不妨设LLC的频率为H GHz,线程的带宽控制值为O*1/4GByte/S,上述线程在T个时钟周期内发送O个访存指令,且访存指令所请求的数据长度为64Byte,可以得到时钟周期与主频的关系为:
O*64Byte/T*H GHz=O*1/4GB/s
由上式,可得:T=256*H。
O个访存指令需要T个时钟周期发送,则一个访存指令的预设发送周期为T/O=256*H/O,第一令牌生成单元103的令牌的生成周期与访存指令的预设发送周期相同,为256*H/O。
可选地,第一令牌生成单元103可以是一个步进为1的计数器,每个时钟周期固定加1,当加到256*H/O个时钟周期时,输出一个令牌,同时计数器清零,从头开始累加。
可选地,第一令牌生成单元103也可以是一个步进可配置的计数器,例如,对访存带宽为O*1/4GByte/S,第一令牌生成单元103的步进可以配置为O,该计数器每个时钟周期累加O,直到计数器的值大于或等于T,输出一个令牌,同时计数器的值减去T,并重新开始累加。
应当理解,第一令牌生成单元103生成令牌的周期的获得方式还可以为除上述方式以外的其他方式,第一令牌生成单元103生成令牌的周期的具体方式不应该理解为对本申请的限制。
LLC用于每消耗一个令牌,便控制所述第一缺失访存队列101向下级存储单元发送一个缺失访存请求,其中,生成上述令牌的第一令牌生成单元103所对应的线程生成上述缺失访存请求。
多个非LLC级cache 200中的每个非LLC级cache 200均配置有第二缺失访存队列201、第二监控单元202以及多个第二令牌生成单元203(图1中仅示出一个第二令牌生成单元203作为示例),第二监控单元202以及多个第二令牌生成单元203均与第二缺失访存队列201相通信。
第二缺失访存队列201用于存储缺失访存请求,存储在第二缺失队列中的缺失访存请求欲访存的数据在对应的非LLC级cache 200缺失。
第二监控单元202用于检测目标线程对应的缺失访存请求在第二缺失访存队列201的占比,可选地,由下一级存储单元向该非LLC级cache 200发送的限制率中,可以携带欲限制的目标线程的身份信息,该非LLC级cache 200可以将目标线程的身份信息发送给第二监控单元202,以使第二监控单元202能够对目标线程生成的缺失访存请求在第二缺失访存队列201的占比进行监控。
若目标线程生成的缺失访存请求的占比较高,超出了第二设定阈值,第二监控单元202用于根据目标线程生成的缺失访存请求在第二缺失访存队列201中的占比,确定该非LLC级cache 200的上一级存储单元的限制度。
在一种具体实施方式中,在第二设定阈值之上存在有若干个占比区间,非LLC级cache 200的上一级存储单元的限制度的具体数值与占比区间存在映射关系,第二监控单元202可以根据目标线程生成的缺失访存请求在第二缺失访存队列201中的占比落入的占比区间,确定出该占比区间对应的限制度。
例如,在第二设定阈值之上存在有如下多个占比区间:(y1,y2],(y2,y3],(y3,y4],…,(yk,yk+1],共k个占比区间,每个占比区间均存在自身对应的限制度,第二监控单元202可以根据目标线程生成的缺失访存请求在第二缺失访存队列201中的占比落入的占比区间,确定出与该占比区间对应的限制度。
在另一种具体实施方式中,可以先计算出占比与第二设定阈值的差值,然后根据该差值落入的差值区间,确定出该差值区间对应的限制度。其中,可以存在多个差值区间,且非LLC级cache 200的上一级存储单元的限制度的具体数值与差值区间存在映射关系。
非LLC级cache 200配置的多个第二令牌生成单元203中的与所述目标线程对应的第二令牌生成单元203用于接收下一级cache发送的限制度,并根据下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
可选地,可以通过如下方式计算第二令牌生成单元203生成令牌的周期:
限制度与第二令牌生成单元203生成令牌的周期存在着一一映射的关系,与目标线程对应的第二令牌生成单元203在接收到下一级cache发送的限制度后,可以根据限制度与生成令牌的周期映射的关系,确定第二令牌生成单元203的生成令牌的周期。
非LLC级cache 200每消耗一个所述目标线程对应的第二令牌生成单元203生成的令牌,便控制所述第二缺失访存队列201向下一级cache发送一个所述目标线程生成的缺失访存请求。
处理器核包括指令发射单元300,指令发射单元300包括指令发射逻辑单元301和多个第三令牌生成单元302,多个第三令牌生成单元302的数量与处理器核支持的多个线程一一对应。
多个第三令牌生成单元302中的与所述目标线程对应的第三令牌生成单元302用于接收下一级cache发送的限制度。
所述第三令牌生成单元302用于根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
可选地,可以通过如下方式计算第三令牌生成单元302生成令牌的周期:
限制度与第三令牌生成单元302生成令牌的周期存在着一一映射的关系,与目标线程对应的第三令牌生成单元302在接收到下一级cache发送的限制度后,可以根据限制度与生成令牌的周期映射的关系,确定第三令牌生成单元302的生成令牌的周期。
指令发射单元300用于每消耗一个所述目标线程对应的第三令牌生成单元302生成的令牌,便控制所述指令发射逻辑单元301向下级cache发送一个所述目标线程生成的访存请求。
为了便于描述,不妨以图2示出的多线程控制器系统的实施例为例进行说明。在图2示出的多线程控制器系统中,多级cache共有3级,分别为一级cache L1、二级cache L2、三级cache L3,其中,LLC为L3,非LLC级cache 200包括L1和L2。
对于L3,即LLC:
LLC配置的第一监控单元102用于检测所述第一缺失访存队列101中每个线程生成的访存请求的占比。
当存在一目标线程生成的访存请求在所述第一缺失访存队列101中的第一占比超过第一设定阈值时,LLC配置的第一监控单元102用于根据所述第一占比,确定针对所述目标线程的第一限制度。
LLC配置的第一监控单元102用于将所述第一限制度发送给L2,以使L2根据所述第一限制度,在L2中对所述目标线程对应的缺失访存请求的发送进行限制。
LLC配置的每个所述第一令牌生成单元103根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
LLC每消耗一个令牌,便控制LLC配置的第一缺失访存队列101向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列101中由生成所述令牌的第一令牌生成单元103对应的线程所生成的访存请求。
不妨设L3被8个线程共享,且L3配置的第一缺失访存队列深度为96项,则目标线程占比与限制度的对应关系可以如下表所示:
其中,L3_ThrottleVld为0,表示不需要对L3的上一级cache进行限制;L3_ThrottleVld为1,表示需要对L3的上一级cache进行限制。L3_限制度为x,表示不关心态。L3_限制度越大,表示在L2中对所述目标线程对应的缺失访存请求的发送进行限制的程度越大。
对于L2 220:
L2 220配置的第二监控单元222检测所述目标线程生成的访存请求在L2配置的第二缺失访存队列221的第二占比。
当所述目标线程生成的访存请求在L2配置的第二缺失访存队列221的第二占比超过第二设定阈值时,L2配置的第二监控单元222根据所述第二占比,确定针对所述目标线程的第二限制度。
L2配置的第二监控单元222将所述第二限制度发送给L1,以使L1根据L2配置的第二监控单元222发送来的第二限制度,在L1中对所述目标线程对应的缺失访存请求的发送进行限制。
L2配置的多个第二令牌生成单元223中的与所述目标线程对应的第二令牌生成单元223用于接收L3发送的第一限制度。
L2配置的第二令牌生成单元223根据所述L3发送的第一限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
L2每消耗一个所述目标线程对应的第二令牌生成单元223生成的令牌,便控制所述L2配置的第二缺失访存队列221向L3发送一个所述目标线程生成的缺失访存请求。
不妨设L2被2个线程共享,且L2配置的第二缺失访存队列201深度为50项,则目标线程占比与限制度的对应关系可以如下表所示:
其中,L2_ThrottleVld为0,表示不需要对L2的上一级cache进行限制;L2_ThrottleVld为1,表示需要对L2的上一级cache进行限制。L2_限制度为x,表示不关心态。L2_限制度越大,表示在L1中对所述目标线程对应的缺失访存请求的发送进行限制的程度越大。
对于L1:
L1 210配置的第二监控单元212用于检测所述目标线程生成的访存请求在L1配置的第二缺失访存队列211的第二占比。
当所述目标线程生成的访存请求在L1配置的第二缺失访存队列211的第二占比超过第二设定阈值时,L1配置的第二监控单元212根据所述第二占比,确定针对所述目标线程的第二限制度。
L1配置的第二监控单元212将所述第二限制度发送给处理器核的指令发射单元300,以使指令发射单元300根据L1配置的第二监控单元212发送来的第二限制度,在指令发射单元300中对所述目标线程对应的访存请求的发送进行限制。
L1配置的多个第二令牌生成单元213中的与所述目标线程对应的第二令牌生成单元213用于接收L2发送的第二限制度。
L1配置的第二令牌生成单元213根据所述L2发送的第二限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
L1每消耗一个所述目标线程对应的第二令牌生成单元213生成的令牌,便控制L1配置的第二缺失访存队列211向L2发送一个所述目标线程生成的缺失访存请求。
不妨设L1被2个线程共享,且L1配置的第二缺失访存队列211深度为16项,则目标线程占比与限制度的对应关系可以如下表所示:
其中,L1_ThrottleVld为0,表示不需要对L1的上一级存储单元进行限制;L1_ThrottleVld为1,表示需要对L1的上一级存储单元进行限制。L1_限制度为x,表示不关心态。L1_限制度越大,表示在L1的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制的程度越大。
对于指令发射单元300:
指令发射单元300配置的多个第三令牌生成单元302中的与所述目标线程对应的第三令牌生成单元302接收L1发送的第二限制度;
所述第三令牌生成单元302根据所述L1发送的第二限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述指令发射单元300每消耗一个所述目标线程对应的第三令牌生成单元302生成的令牌,便控制所述指令发射逻辑单元301向L1发送一个所述目标线程生成的访存请求。
不妨设处理器核的每个线程最多可以发4条访存指令,则处理器核限制度与发射数量的对应关系如下表:
请参见图3,图3示出了本申请实施例提供的访存带宽控制方法的一种流程示意图,该访存带宽控制方法由上述的多线程处理器系统中LLC执行,图3示出的访存带宽控制方法包括如下步骤S110至步骤S130:
步骤S110,第一监控单元102检测所述第一缺失访存队列101中每个线程生成的访存请求的占比。
步骤S120,若存在一目标线程生成的访存请求在所述第一缺失访存队列101中的第一占比超过第一设定阈值,所述第一监控单元102根据所述第一占比,确定针对所述目标线程的第一限制度。
步骤S130,第一监控单元102将所述第一限制度发送给所述LLC的上一级存储单元,以使所述LLC的上一级存储单元根据所述第一限制度,在所述LLC的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
通过监控LLC中每个线程生成的访存请求在缺失访存队列的占比是否超过设定阈值,对占比超过设定阈值的线程,计算出该线程对应的LLC的上一级存储单元的限制度,并将该限制度发送给上述的上一级存储单元,使得上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。通过先明确出需要被限制的目标线程,然后再在LLC的上一级存储单元对目标线程生成的访存请求进行限制,在降低线程间干扰的同时,避免了在高级别的cache中对访存带宽进行带宽管理常常出现的不精确的问题。
可选地,请参见图4,在一种具体实施方式中,在步骤S110之前,所述方法还可以包括如下步骤S101至步骤S102:
步骤S101,每个所述第一令牌生成单元103根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
步骤S102,LLC每消耗一个令牌,便控制所述第一缺失访存队列101向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列101中由生成所述令牌的第一令牌生成单元103对应的线程所生成的访存请求。
第一令牌生成单元103根据自身对应的线程的带宽控制值,计算生成令牌的周期,并按照计算出的周期生成令牌,而LLC每消耗一个令牌,才会控制第一缺失访存队列101向下级存储单元发送令牌对应的缺失访存请求,该缺失访存请求由生成上述令牌的第一令牌生成单元103对应的线程生成。因此,便实现了依据带宽控制值对相应的线程的访存请求的发送进行控制。带宽控制值反映了线程的优先级,通过上述方式便能够实现对不同优先级的线程生成的访存请求进行区别对待,从而提升整个多线程处理器系统的处理效率。
请参见图5,图5示出了本申请实施例提供的访存带宽控制方法的一种具体实施方式的流程示意图,该访存带宽控制方法由上述的多线程处理器系统中的非LLC级cache 200执行,该非LLC级cache 200可以是图2中的L2,也可以是图2中的L3。图5示出的访存带宽控制方法包括如下步骤S210至步骤S230:
步骤S210,第二监控单元202检测所述目标线程生成的访存请求在所述第二缺失访存队列201的第二占比。
步骤S220,若所述目标线程生成的访存请求在所述第二缺失访存队列201的第二占比超过第二设定阈值,所述第二监控单元202根据所述第二占比,确定针对所述目标线程的第二限制度。
步骤S230,第二监控单元202将所述第二限制度发送给所述非LLC级cache 200的上一级存储单元,以使所述非LLC级cache 200的上一级存储单元根据所述第二限制度,在所述非LLC级cache 200的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
通过第二监控单元202监控目标线程生成的访存请求在所述第二缺失访存队列201的第二占比是否超过第二设定阈值,若第二占比依然超过第二设定阈值,计算出该非LLC级cache 200的目标线程对应的上一级存储单元的限制度,并将该限制度发送给该非LLC级cache 200的上一级存储单元,使得该非LLC级cache 200上一级存储单元根据接收到的限制度对该线程生成的访存请求进行限制。若在该非LLC级cache 200的第二缺失访存队列201中,目标线程生成访存请求依然超过第二设定阈值,则表示在该非LLC级cache 200也有可能出现干扰高优先级线程生成的访存请求的风险,因此,可以对目标线程对应的上一级存储单元进行限制,从而转嫁在该非LLC级cache 200产生的压力。
可选地,请参见图6,在一种具体实施方式中,在步骤S210之前,所述方法还可以包括如下步骤S201至步骤S203:
步骤S201,非LLC级cache 200配置的多个第二令牌生成单元203中的与所述目标线程对应的第二令牌生成单元203接收下一级cache发送的限制度。
此处第二令牌生成单元203接收的下一级cache发送的限制度与下一级cache的具体身份有关,若该非LLC级cache 200是图2示出的多级cache中的L2,则下一级cache是LLC,限制度为LLC对应的第一限制度;若该非LLC级cache 200是图2示出的多级cache中的L1,则下一级cache是L2,限制度为L2对应的第二限制度。
步骤S202,第二令牌生成单元203根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
步骤S203,非LLC级cache 200每消耗一个所述目标线程对应的第二令牌生成单元203生成的令牌,便控制所述第二缺失访存队列201向下一级cache发送一个所述目标线程生成的缺失访存请求。
在上述的实施方式中,由于第二令牌生成单元203与线程一一对应,因此,可以针对性的对目标线程对应的第二令牌生成单元203的生成令牌的速度进行限制,具体通过改变第二令牌生成单元203生成令牌的周期的方式来实现。具体通过接收下一级cache发送的限制度来改变本级cache生成令牌的周期,从而可以减缓下一级cache中高优先级的线程生成的访存请求与低优先级的线程生成的访存请求相互干扰的压力。
请参见图7,图7示出了本申请实施例提供的访存带宽控制方法的一种流程示意图,该访存带宽控制方法由上述的多线程处理器系统中的处理器核包括的指令发射单元300执行,图7示出的访存带宽控制方法包括如下步骤S310至步骤S330:
步骤S310,所述多个第三令牌生成单元302中的与所述目标线程对应的第三令牌生成单元302接收下一级cache发送的限制度。
步骤S320,所述第三令牌生成单元302根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成。
若下一级cache是LLC,限制度为LLC对应的第一限制度;若下一级cache是非LLC级cache 200,例如图2中示出的L1,限制度为该非LLC级cache 200对应的第二限制度。
步骤S330,所述指令发射单元300每消耗一个所述目标线程对应的第三令牌生成单元302生成的令牌,便控制所述指令发射逻辑单元301向下级cache发送一个所述目标线程生成的访存请求。
可以根据处理器核的下一级cache发送来的限制度,直接在处理器核的环节对目标线程生成的访存请求进行限制,由于限制度是从LLC开始,对同一目标线程逐层限制上来的,因此在处理器核中对该目标线程的限制是准确的,即该目标线程生成的访存请求会由LLC向下级存储单元发送,而不会在多级cache中命中该访存请求欲访问的数据,在降低了低级别cache中线程之间相互干扰的同时,保证了带宽管理的精确性。
在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种多线程处理器系统,其特征在于,包括多级高速缓存cache,多级cache包括最后一级高速缓存LLC;
所述LLC配置有第一缺失访存队列以及第一监控单元,所述第一缺失访存队列用于存储缺失访存请求,其中,所述缺失访存请求为欲访存的数据在所述LLC缺失的访存请求,所述缺失访存请求携带有身份信息,所述身份信息包括表征该缺失访存请求来自的线程的线程标识;
所述第一监控单元用于检测所述第一缺失访存队列中每个线程生成的访存请求的占比;
当存在一目标线程生成的访存请求在所述第一缺失访存队列中的第一占比超过第一设定阈值时,所述第一监控单元用于根据所述第一占比,确定针对所述目标线程的第一限制度;
所述第一监控单元用于将所述第一限制度发送给所述LLC的上一级存储单元,以使所述LLC的上一级存储单元根据所述第一限制度,在所述LLC的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
2.根据权利要求1所述的多线程处理器系统,其特征在于,所述LLC还配置有多个第一令牌生成单元,所述多个第一令牌生成单元与所述LLC支持的多个线程一一对应;
每个所述第一令牌生成单元用于根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述LLC用于每消耗一个令牌,便控制所述第一缺失访存队列向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列中由生成所述令牌的第一令牌生成单元对应的线程所生成的访存请求。
3.根据权利要求2所述的多线程处理器系统,其特征在于,所述多级cache包括除所述LLC以外的至少一个非LLC级cache,所述至少一个非LLC级cache中的每个非LLC级cache均配置有各自的第二缺失访存队列以及第二监控单元,所述第二缺失访存队列用于存储缺失访存请求,其中,所述缺失访存请求为欲访存的数据在所述非LLC级cache缺失的访存请求;
所述第二监控单元用于检测所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比占比;
当所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比超过第二设定阈值占比时,所述第二监控单元用于根据所述第二占比,确定针对所述目标线程的第二限制度占比;
所述第二监控单元用于将所述第二限制度发送给所述非LLC级cache的上一级存储单元,以使所述非LLC级cache的上一级存储单元根据所述第二限制度,在所述非LLC级cache的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
4.根据权利要求3所述的多线程处理器系统,其特征在于,每个所述非LLC级cache均配置有多个第二令牌生成单元,所述多个第二令牌生成单元与所述非LLC级cache支持的多个线程一一对应;
非LLC级cache配置的多个第二令牌生成单元中的与所述目标线程对应的第二令牌生成单元用于接收下一级cache发送的限制度;
所述第二令牌生成单元用于根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述非LLC级cache用于每消耗一个所述目标线程对应的第二令牌生成单元生成的令牌,便控制所述第二缺失访存队列向下一级cache发送一个所述目标线程生成的缺失访存请求。
5.根据权利要求1所述的多线程处理器系统,其特征在于,所述多线程处理器系统还包括处理器核,所述处理器核与所述多级cache相通信,所述处理器核包括指令发射单元,所述指令发射单元包括指令发射逻辑单元和多个第三令牌生成单元,所述多个第三令牌生成单元的数量与所述处理器核支持的多个线程一一对应;
所述多个第三令牌生成单元中的与所述目标线程对应的第三令牌生成单元用于接收下一级cache发送的限制度;
所述第三令牌生成单元用于根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述指令发射单元用于每消耗一个所述目标线程对应的第三令牌生成单元生成的令牌,便控制所述指令发射逻辑单元向下级cache发送一个所述目标线程生成的访存请求。
6.一种访存带宽控制方法,其特征在于,应用于权利要求1-5任一项所述的多线程处理器系统,用于对所述多线程处理器系统的访存带宽进行限制;所述方法包括:
所述第一监控单元检测所述第一缺失访存队列中每个线程生成的访存请求的占比;
若存在一目标线程生成的访存请求在所述第一缺失访存队列中的第一占比超过第一设定阈值,所述第一监控单元根据所述第一占比,确定针对所述目标线程的第一限制度;
所述第一监控单元将所述第一限制度发送给所述LLC的上一级存储单元,以使所述LLC的上一级存储单元根据所述第一限制度,在所述LLC的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
7.根据权利要求6所述的方法,其特征在于,所述方法应用于权利要求2-4任一项所述的多线程处理器系统;在所述第一监控单元检测所述第一缺失访存队列中每个线程生成的访存请求的占比之前,所述方法还包括:
每个第一令牌生成单元根据自身对应的线程的带宽控制值,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述LLC每消耗一个令牌,便控制所述第一缺失访存队列向下级存储单元发送一个所述令牌对应的缺失访存请求,所述令牌对应的缺失访存请求为第一缺失访存队列中由生成所述令牌的第一令牌生成单元对应的线程所生成的访存请求。
8.根据权利要求7所述的方法,其特征在于,所述方法应用于权利要求3或4所述的多线程处理器系统;所述方法还包括:
第二监控单元检测所述目标线程生成的访存请求在第二缺失访存队列的第二占比;
若所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比超过第二设定阈值,所述第二监控单元根据所述第二占比,确定针对所述目标线程的第二限制度;
所述第二监控单元将所述第二限制度发送给非LLC级cache的上一级存储单元,以使所述非LLC级cache的上一级存储单元根据所述第二限制度,在所述非LLC级cache的上一级存储单元中对所述目标线程对应的缺失访存请求的发送进行限制。
9.根据权利要求8所述的方法,其特征在于,在所述第二监控单元检测所述目标线程生成的访存请求在所述第二缺失访存队列的第二占比之前,所述方法还包括:
非LLC级cache配置的多个第二令牌生成单元中的与所述目标线程对应的第二令牌生成单元接收下一级cache发送的限制度;
所述第二令牌生成单元根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
所述非LLC级cache每消耗一个所述目标线程对应的第二令牌生成单元生成的令牌,便控制所述第二缺失访存队列向下一级cache发送一个所述目标线程生成的缺失访存请求。
10.根据权利要求6所述的方法,其特征在于,所述方法应用于权利要求5所述的多线程处理器系统;所述方法还包括:
多个第三令牌生成单元中的与所述目标线程对应的第三令牌生成单元接收下一级cache发送的限制度;
所述第三令牌生成单元根据所述下一级cache发送的限制度,计算自身生成令牌的周期,并根据所述自身生成令牌的周期进行令牌的生成;
指令发射单元每消耗一个所述目标线程对应的第三令牌生成单元生成的令牌,便控制指令发射逻辑单元向下级cache发送一个所述目标线程生成的访存请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992582.1A CN112099974B (zh) | 2020-09-18 | 2020-09-18 | 多线程处理器系统及访存带宽控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992582.1A CN112099974B (zh) | 2020-09-18 | 2020-09-18 | 多线程处理器系统及访存带宽控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099974A CN112099974A (zh) | 2020-12-18 |
CN112099974B true CN112099974B (zh) | 2023-09-08 |
Family
ID=73759061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010992582.1A Active CN112099974B (zh) | 2020-09-18 | 2020-09-18 | 多线程处理器系统及访存带宽控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099974B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255601A (zh) * | 2016-12-29 | 2018-07-06 | 杭州华为数字技术有限公司 | 一种分配llc资源的方法及装置 |
CN109299021A (zh) * | 2017-07-24 | 2019-02-01 | 阿里巴巴集团控股有限公司 | 页迁移方法、装置和中央处理器 |
CN109791493A (zh) * | 2016-09-29 | 2019-05-21 | 英特尔公司 | 用于乱序集群化解码中的负载平衡的系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429665B2 (en) * | 2010-03-19 | 2013-04-23 | Vmware, Inc. | Cache performance prediction, partitioning and scheduling based on cache pressure of threads |
US9396024B2 (en) * | 2008-10-14 | 2016-07-19 | Vmware, Inc. | Online computation of cache occupancy and performance |
-
2020
- 2020-09-18 CN CN202010992582.1A patent/CN112099974B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109791493A (zh) * | 2016-09-29 | 2019-05-21 | 英特尔公司 | 用于乱序集群化解码中的负载平衡的系统和方法 |
CN108255601A (zh) * | 2016-12-29 | 2018-07-06 | 杭州华为数字技术有限公司 | 一种分配llc资源的方法及装置 |
CN109299021A (zh) * | 2017-07-24 | 2019-02-01 | 阿里巴巴集团控股有限公司 | 页迁移方法、装置和中央处理器 |
Non-Patent Citations (1)
Title |
---|
尹巍 等.消除低重用块和预测访问间隔的Cache管理策略.《小型微型计算机系统》.2012,第33卷(第6期),第1337-1342页. * |
Also Published As
Publication number | Publication date |
---|---|
CN112099974A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8892827B2 (en) | Cooperative memory management | |
US8521982B2 (en) | Load request scheduling in a cache hierarchy | |
KR20180092277A (ko) | 데이터 처리 | |
CN110018899B (zh) | 回收内存的方法及装置 | |
CN112083957B (zh) | 带宽控制设备、多线程控制器系统及访存带宽控制方法 | |
US8490107B2 (en) | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels | |
US8463958B2 (en) | Dynamic resource allocation for transaction requests issued by initiator devices to recipient devices | |
US9772958B2 (en) | Methods and apparatus to control generation of memory access requests | |
CN101460912A (zh) | 数据通信流控制装置及其方法 | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
CN110858843A (zh) | 业务请求处理方法、装置及计算机可读存储介质 | |
CN113742114B (zh) | 一种系统限流的方法和装置 | |
CN111597040B (zh) | 一种资源分配方法、装置、存储介质和电子设备 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
US6393522B1 (en) | Method and apparatus for cache memory management | |
CN106385377B (zh) | 一种信息处理方法和系统 | |
CN110740164A (zh) | 服务器确定方法、调控方法、装置、设备及存储介质 | |
US10599577B2 (en) | Admission control for memory access requests | |
CN112099974B (zh) | 多线程处理器系统及访存带宽控制方法 | |
US9971565B2 (en) | Storage, access, and management of random numbers generated by a central random number generator and dispensed to hardware threads of cores | |
CN116909729A (zh) | Gpu多任务调度方法 | |
CN105637483B (zh) | 线程迁移方法、装置和系统 | |
CN111221749A (zh) | 数据块写入方法、装置、处理器芯片及Cache | |
CN116521351B (zh) | 多线程任务调度方法、装置、存储介质及处理器 | |
CN117785484B (zh) | 共享Cache资源分配方法、系统、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |