CN112083957B - 带宽控制设备、多线程控制器***及访存带宽控制方法 - Google Patents

带宽控制设备、多线程控制器***及访存带宽控制方法 Download PDF

Info

Publication number
CN112083957B
CN112083957B CN202010991780.6A CN202010991780A CN112083957B CN 112083957 B CN112083957 B CN 112083957B CN 202010991780 A CN202010991780 A CN 202010991780A CN 112083957 B CN112083957 B CN 112083957B
Authority
CN
China
Prior art keywords
thread
rate
processor core
bandwidth control
limiting
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
Application number
CN202010991780.6A
Other languages
English (en)
Other versions
CN112083957A (zh
Inventor
姚涛
时兴
贾琳黎
林江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202010991780.6A priority Critical patent/CN112083957B/zh
Publication of CN112083957A publication Critical patent/CN112083957A/zh
Application granted granted Critical
Publication of CN112083957B publication Critical patent/CN112083957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供一种带宽控制设备、多线程控制器***及访存带宽控制方法,带宽控制设备分别与LLC以及处理器核连接,处理器核支持多线程,处理器核与多级cache相通信;带宽控制设备用于获取LLC向下级存储单元发送的第一访存指令;带宽控制设备用于确定第一线程标识对应的第一处理优先级,并确定第一线程在预设时钟周期后发送访存指令的限制率;带宽控制设备用于向第一处理器核发送限制率,指示处理器核根据限制率,限制第一线程在预设时钟周期发送访存指令的数量。在处理器核的环节就实现了对低优先级的线程的访存带宽的限制,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。

Description

带宽控制设备、多线程控制器***及访存带宽控制方法
技术领域
本申请涉及计算机领域,具体而言,涉及一种带宽控制设备、多线程控制器***及访存带宽控制方法。
背景技术
在多核多线程处理器中,支持服务质量(Quality of Service,简称QoS)的缓存cache带宽管理能够使程序更有秩序的执行。QoS通过限制低优先级线程占有的带宽资源,从而为高优先级线程提供更好的服务。
然而在实际中,多个线程在处理器的多级cache***中常常共享多种资源,存在线程之间的资源竞争。由于最后一级高速缓存(Last level cache,简称LLC)需要对多个处理器核以及多个线程进行服务,使得LLC中的资源竞争尤为激烈。另一方面,在LLC中对低优先级线程进行限制,反而使得低优先级线程常去占有LLC中的各种资源,从而导致高优先级线程的可用资源较少,甚至因为资源被占用而导致高优先级线程的请求被阻塞。因此,现有技术无法在限制低优先级线程的带宽资源的同时,不干扰高优先级线程的运行。
发明内容
本申请实施例的目的在于提供一种带宽控制设备、多线程控制器***及访存带宽控制方法,用以改善现有技术无法在限制低优先级线程的带宽资源的同时,不干扰高优先级线程的运行的问题。
第一方面,本申请实施例提供了一种带宽控制设备,所述带宽控制设备分别与多级高速缓存cache中的最后一级高速缓存LLC以及至少一个处理器核连接,所述至少一个处理器核支持多线程,所述至少一个处理器核与所述多级cache相通信;所述带宽控制设备用于获取所述LLC向下级存储单元发送的第一访存指令,其中,所述第一访存指令携带有生成所述第一访存指令的第一处理器核的第一核标识以及所述第一处理器核所运行的、生成所述第一访存指令的第一线程的第一线程标识;所述带宽控制设备用于确定所述第一线程标识对应的第一处理优先级,并根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率;所述带宽控制设备用于向所述第一处理器核发送所述限制率,指示所述处理器核根据所述限制率,限制所述第一线程在预设时钟周期后发送访存指令的数量。
在上述的实施方式中,带宽控制设备可以获取LLC发出的访存指令,并从访存指令中获取生成该访存指令的线程的线程标识。根据线程标识,确定生成该访存指令的线程的处理优先级,进而根据处理优先级计算限制率,然后带宽控制设备把限制率发送给访存指令来自的处理器核。处理器核可以根据限制率,限制单位时钟周期内同一线程发送访存指令的数量,该被限制的线程的处理优先级通常是较低的优先级。通过上述方式,在处理器核的环节(即处理器指令的分派阶段)就实现了对低优先级的线程的访存带宽的限制,相应减少在多级cache中对低优先级的线程的访存带宽的限制;多级cache中的低优先级的线程生成的访存指令的减少,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,从而实现兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。
在一个可能的设计中,所述带宽控制设备包括多个控制计算单元,所述多个控制计算单元中的至少一个处于运行状态,处于运行状态的控制计算单元的数量与所述多线程处理器***支持的所有线程的所有处理优先级的数量相同,处于运行状态的控制计算单元与所述处理优先级一一对应;所述带宽控制设备用于确定所述第一处理优先级对应的第一控制计算单元;所述带宽控制设备用于利用所述第一控制计算单元,计算所述第一线程在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,带宽控制设备中的处于运行状态的控制计算单元与多线程处理器***支持的所有线程的所有处理优先级一一对应。带宽控制设备可以从处于运行状态的多个控制计算单元中,选择出相应处理优先级的第一控制计算单元,并利用该第一控制计算单元实现限制率的计算。每个处于运行状态的控制计算单元具备参数与处理优先级对应的元器件,从而计算出与处理优先级对应的限制率。
在一个可能的设计中,所述第一控制计算单元包括令牌发生器、令牌计数器以及限制率计算单元,所述令牌发生器与所述限制率计算单元均与所述令牌计数器连接;其中,所述令牌发生器用于为属于所述第一优先级的每一个线程生成对应令牌,生成令牌的生成周期与所述第一优先级对应的访存指令的预设发送周期相同;所述令牌计数器用于在接收到所述令牌发生器为所述第一线程新生成的令牌时,将所述第一线程的令牌当前数量加一;所述令牌计数器还用于在所述LLC向下级存储单元发送所述第一线程的访存指令时,将所述第一线程的令牌当前数量减一;所述限制率计算单元用于计算当前时钟周期内所述第一线程的令牌初始数量与所述第一线程的令牌当前数量的差值,并根据所述差值计算所述第一线程的在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,第一控制计算单元包括的令牌发生器的令牌生成周期可以与访存指令的预设发送周期相同,上述的预设发送周期可以根据设定的访存带宽获得,访存带宽可以由用户根据线程的处理优先级进行设置。令牌计数器可以在接到令牌发生器新生成的令牌时,将令牌当前数量加一;在接收到访存指令时,将令牌当前数量减一。通过上述方式,限制率计算单元可以得到在当前时钟周期的时间段中,令牌数量的变化趋势和变化值;并依据令牌数量的变化趋势和变化值,计算限制率。由于访存带宽可以根据线程的处理优先级进行设置,使得计算出的限制率与处理优先级相关,从而可以实现对不同处理优先级的线程的区分对待,提高处理效率。
在一个可能的设计中,所述限制率计算单元用于根据当前时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,与最近的一个或多个时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,计算限制率变化量;所述限制率计算单元用于计算历史限制率与所述限制率变化量的加和,所述加和为所述第一线程在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,可以依据当前时钟周期的令牌差值以及历史时钟周期的令牌差值计算出限制率变化率,然后再计算限制率变化率与历史限制率的加和,从而得到新的限制率,该限制率为处理器核在预设时钟周期后发送访存指令的限制率。结合历史数据进行限制率的计算,使得限制率更加符合访存带宽控制的需要。
第二方面,本申请提供一种多线程处理器***,包括至少一个处理器核、多级高速缓存cache以及第一方面或第一方面的任一可选的实现方式所述的带宽控制设备,所述至少一个处理器核支持多线程,所述至少一个处理器核与所述多级cache相通信,所述多级cache包括最后一级高速缓存LLC,所述LLC以及所述至少一个处理器核均与所述带宽控制设备连接。
在上述的实施方式中,在处理器核的环节就实现了对低优先级的线程的访存带宽的限制,相应减少在多级cache中对低优先级的线程的访存带宽的限制;多级cache中的低优先级的线程生成的访存指令的减少,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,从而实现兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。
在一个可能的设计中,所述处理器核包括指令输出逻辑模块和执行/访存单元,所述指令输出逻辑模块与所述执行/访存单元连接,所述指令输出逻辑模块内设置有发射限制模块;所述处理器核中的发射限制模块用于接收所述带宽控制设备发送的限制率,指示所述发射限制模块根据限制率限制所述第一线程在预设时钟周期后发送访存指令的数量。
第三方面,本申请实施例提供了一种访存带宽控制方法,应用于第二方面及第二方面中任一可选的实现方式的多线程处理器***,所述方法包括:所述带宽控制设备获取所述LLC向下级存储单元发送的第一访存指令,其中,所述第一访存指令携带有生成所述第一访存指令的第一处理器核的第一核标识以及所述第一处理器核所运行的、生成所述第一访存指令的第一线程的第一线程标识;所述带宽控制设备确定所述第一线程标识对应的第一处理优先级,并根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率;所述带宽控制设备向所述第一处理器核发送所述限制率,指示所述处理器核根据所述限制率,限制所述第一线程在预设时钟周期后发送访存指令的数量。
在上述的实施方式中,带宽控制设备可以获取LLC发出的访存指令,并从访存指令中获取生成该访存指令的线程的线程标识。根据线程标识,确定生成该访存指令的线程的处理优先级,进而根据处理优先级计算限制率,然后带宽控制设备把限制率发送给访存指令来自的处理器核。处理器核可以根据限制率,限制单位时钟周期内同一线程发送访存指令的数量,该被限制的线程的处理优先级通常是较低的优先级。通过上述方式,在处理器核的环节(即处理器指令的分派阶段)就实现了对低优先级的线程的访存带宽的限制,相应减少在多级cache中对低优先级的线程的访存带宽的限制;多级cache中的低优先级的线程生成的访存指令的减少,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,从而实现兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。
在一个可能的设计中,所述带宽控制设备包括多个控制计算单元,所述多个控制计算单元中的至少一个处于运行状态,处于运行状态的控制计算单元的数量与所述多线程处理器***支持的所有线程的所有处理优先级的数量相同,处于运行状态的控制计算单元与所述处理优先级一一对应;所述根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率,包括:所述带宽控制设备确定所述第一处理优先级对应的第一控制计算单元;所述带宽控制设备利用所述第一控制计算单元,计算所述第一线程在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,带宽控制设备中的处于运行状态的控制计算单元与多线程处理器***支持的所有线程的所有处理优先级一一对应。带宽控制设备可以从处于运行状态的多个控制计算单元中,选择出相应处理优先级的第一控制计算单元,并利用该第一控制计算单元实现限制率的计算。每个处于运行状态的控制计算单元具备参数与处理优先级对应的元器件,从而计算出与处理优先级对应的限制率。
在一个可能的设计中,所述第一控制计算单元包括令牌发生器、令牌计数器以及限制率计算单元,所述令牌发生器与所述限制率计算单元均与所述令牌计数器连接;其中,所述令牌发生器用于为属于所述第一优先级的每一个线程生成对应令牌,令牌的生成周期与所述第一优先级对应的访存指令的预设发送周期相同;所述带宽控制设备利用所述第一控制计算单元,计算处理器核在预设时钟周期后发送访存指令的限制率,包括:所述令牌计数器在接收到所述令牌发生器为所述第一线程新生成的令牌时,将所述第一线程的令牌当前数量加一;所述令牌计数器在所述LLC向下级存储单元发送所述第一线程的访存指令时,将所述第一线程的令牌当前数量减一;所述限制率计算单元计算当前时钟周期内所述第一线程的令牌初始数量与所述第一线程的令牌当前数量的差值,并根据所述差值计算所述第一线程在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,第一控制计算单元包括的令牌发生器的令牌生成周期可以与访存指令的预设发送周期相同,上述的预设发送周期可以根据设定的访存带宽获得,访存带宽可以由用户根据线程的处理优先级进行设置。令牌计数器可以在接到令牌发生器新生成的令牌时,将令牌当前数量加一;在接收到访存指令时,将令牌当前数量减一。通过上述方式,限制率计算单元可以得到在当前时钟周期的时间段中,令牌数量的变化趋势和变化值;并依据令牌数量的变化趋势和变化值,计算限制率。由于访存带宽可以根据线程的处理优先级进行设置,使得计算出的限制率与处理优先级相关,从而可以实现对不同处理优先级的线程的区分对待,提高处理效率。
在一个可能的设计中,所述根据所述差值计算所述第一线程在预设时钟周期后发送访存指令的限制率,包括:所述限制率计算单元根据当前时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,与最近的一个或多个时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,计算限制率变化量;所述限制率计算单元计算历史限制率与所述限制率变化量的加和,所述加和为所述第一线程在预设时钟周期后发送访存指令的限制率。
在上述的实施方式中,可以依据当前时钟周期的令牌差值以及历史时钟周期的令牌差值计算出限制率变化率,然后再计算限制率变化率与历史限制率的加和,从而得到新的限制率,该限制率为处理器核在预设时钟周期后发送访存指令的限制率。结合历史数据进行限制率的计算,使得限制率更加符合访存带宽控制的需要。
在一个可能的设计中,所述第一处理器核包括指令输出逻辑模块和执行/访存单元,所述指令输出逻辑模块与所述执行/访存单元连接,所述指令输出逻辑模块内设置有发射限制模块;所述带宽控制设备向所述第一处理器核发送所述限制率,包括:所述带宽控制设备向所述第一处理器核中的发射限制模块发送限制率,指示所述发射限制模块根据限制率限制所述第一线程在预设时钟周期后发送访存指令的数量。
在上述的实施方式中,带宽控制设备具体向处理器核中的发射限制模块发送限制率,从而令发射限制模块根据限制率限制处理器核的指令输出逻辑模块的发射速率,从而限制所述第一线程在预设时钟周期后发送访存指令的数量。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的多线程控制器***的示意性结构框图;
图2示出了本申请实施例提供的多线程控制器***的一种实施例的示意性结构框图;
图3示出了带宽控制设备的示意性结构框图;
图4示出了带宽控制设备中的单个控制计算单元的示意性结构框图;
图5示出了多个处理器核中的任一处理器核的示意性结构框图;
图6示出了本申请实施例提供的访存带宽控制方法的流程示意图;
图7示出了图6中步骤S120的具体步骤的流程示意图;
图8示出了图7中步骤S122的具体步骤的流程示意图。
具体实施方式
对照实施例,传统支持QoS的cache带宽管理往往是在多级cache***中对低优先级线程进行限制,然而对低优先级线程进行限制,反而使得低优先级线程长期占有cache中的各种资源。例如,在LLC中,低优先级线程对应的访存指令往往会长期存放在缺失缓存队列MissQueue或请求缓存队列ReqQueue中,导致高优先级线程在MissQueue或ReqQueue中的可用资源较少。其中,MissQueue用于存放待发往下一级存储单元的访存指令,ReqQueue用于存放从上一级cache接收到的访存指令。
本申请实施例提供的带宽控制设备、多线程控制器***及访存带宽控制方法通过在处理器核的环节,即处理器指令的分派阶段(Dispatch/issue),对低优先级的线程的访存带宽进行限制,从而减少在多级cache中对低优先级的线程的访存带宽的限制,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,从而实现兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参见图1,图1示出了本申请实施例提供的多线程控制器***的示意性结构框图,该***10包括多个处理器核110、多级cache以及带宽控制设备210。多个处理器核110中的每个处理器核110均可以支持多线程,多个处理器核110均与多级cache相通信。
详情请参见图1,不妨设处理器核110的个数为n个,多级cache有m个层级,则多级cache包括一级cache 120、二级cache 130…m级cache,其中,多级cache中的最后一级cache被记为LLC 140,即在图1示出的多线程控制器***中,m级cache为LLC 140。LLC 140以及n个处理器核110均与带宽控制设备210连接。
任一处理器核110支持的多线程中的任一线程均可以在处理器核110的时钟周期内生成若干数量个访存指令,其中,访存指令为在存储单元中访问特定数据的指令。该访存指令会优先在高级别cache中查找欲访问的特定数据是否被缓存,若上述的特定数据未缓存在高级别cache,则称上述的特定数据在高级别cache“缺失”(Miss);若上述的特定数据缓存在高级别cache,则称上述的特定数据在高级别cache“命中”(Hit)。
请参见图1,某线程在处理器核110的当前时钟周期生成的访存指令会优先在一级cache 120中查找欲访问的特定数据,若在一级cache 120中未查找到欲访问的特定数据,判定一级cache 120缺失,并由一级cache 120将该访存指令发往二级cache 130;该访存指令在二级cache 130中继续查找欲访问的特定数据,若在二级cache 130中仍未查找到欲访问的特定数据,判定二级cache 130缺失,并由二级cache 130将该访存指令发往三级cache…依次类推,直到m-1级cache缺失,该访存指令被m-1级cache发送到m级cache,即LLC140。若LLC 140依然缺失,则LLC 140会将该访存指令向下级存储单元发送。被生成的访存指令携带有身份信息SrcID,SrcID包括处理器核标识Core ID和线程标识TID,其中,处理器核110标识Core ID为该访存指令来自的处理器核110的标识,线程标识TID为该访存指令来自的线程的标识。
该访存指令会经过片上互联***被发送给更低级的存储***,更低级的存储***通常是动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)。片上互联***除了与DRAM连接,还可以与IO设备以及其他的处理器***连接。
可选地,在一种具体实施方式中,一级cache 120可以包括一级指令cache(简称L1I)和一级数据cache(简称L1D),访存指令可以根据自身欲访问的特定数据的数据类型被处理器核110选择性的发送给L1I和LID中的一个。例如,若访存指令欲访问的特定数据的数据类型为指令,则处理器核110可以把该访存指令发送给L1I,使得访存指令在L1I缺失时,即可被L1I发送到二级cache 130;若访存指令欲访问的特定数据的数据类型为数据,则处理器核110可以把该访存指令发送给L1D,使得访存指令在L1D缺失时,即可被L1D发送到二级cache 130。在另一可能实现方式中,访存指令也可以在L1I缺失时,继续在L1D中查找欲访问的特定数据,在L1D也缺失时,该访存指令才被发送到二级cache 130;或访存指令也可以在L1D缺失时,继续在L1I中查找欲访问的特定数据,在L1I也缺失时,该访存指令才被发送到二级cache 130。访存指令在一级cache 120中查找的具体过程不应该理解为是对本申请的限制。
带宽控制设备210会获取LLC 140向下级存储单元发送的访存指令,并通过一系列计算获取生成该访存指令的线程所支持的处理器核110在预设时钟周期后发送访存指令的限制率,并将限制率发送给处理器核110。带宽控制设备210的具体结构以及限制率的计算过程将在下文中详述。
处理器核110可以根据限制率,限制预设时钟周期后的单位时钟周期内,生成上述访存指令的线程发送新的访存指令的数量。其中,预设时钟周期指的是从处理器核110的当前时钟周期开始计,经过的若干个时钟周期。由于信号传输需要时间,因此,当前时钟周期计算出的限制率往往作用于预设时间周期后的处理器核110发出的访存指令。预设时钟周期可以是10个时钟周期,也可以为其他数量,例如12个时钟周期,预设时钟周期的具体数量不应该理解为是对本申请的限制。
为了便于描述,不妨以图2示出的多线程控制器***的实施例为例进行说明。即不妨设处理器核110的个数为4个,分别为Core 0、Core 1、Core 2、Core 3,其中,4个处理器核110中的每个处理器核110均支持两个线程;不妨设多级cache共有3级,分别为L1、L2、L3,其中,L1均包括L1D和L1I。
请参见图3,图3示出了带宽控制设备210的示意性结构框图,带宽控制设备210包括请求分配单元211、多个控制计算单元212、控制信号分配单元213以及QoS控制管理寄存器214。
请求分配单元211用于根据访存指令的SrcID,确定生成该访存指令的线程以及该线程对应的处理优先级,处理优先级即服务等级(Class of Service,简称CoS)。请求分配单元211可以从多个控制计算单元212中确定出与CoS对应的控制计算单元212,并将访存指令分配到上述的控制计算单元212。
多个控制计算单元212的数量可以与LLC 140支持的线程总数相同,例如,对图2示出的多线程控制器***,有4个处理器核110,且每个处理器核110均支持两个线程,上述的线程均被LLC 140(即三级cache)支持,则LLC 140支持的线程总数为4*2=8,控制计算单元212的数量与LLC 140支持的线程总数相同,也为8个,分别为控制计算单元0、控制计算单元1、控制计算单元2…控制计算单元7。
上述的8个线程均有各自对应的CoS。可选地,可以一个线程对应一个CoS,也可以多个线程对应一个CoS,即CoS的数量小于或等于LLC 140支持的线程的数量。多个控制计算单元212中处于运行状态的控制计算单元212的个数与CoS的数量相同,即处于运行状态的控制计算单元212的数量小于或等于控制计算单元212的总数量。
控制计算单元212用于根据自身对应的CoS以及接收到的访存指令计算限制率,并将限制率输入至控制信号分配单元213。控制计算单元212计算限制率的具体过程在下文进行详细描述。
控制信号分配单元213用于将限制率转换为发射控制信号,并根据线程与CoS的映射关系,将发射控制信号反馈给支持该线程的处理器核110。
QoS控制管理寄存器214用于保持***中的各个CoS的带宽配额情况、控制计算单元212所需的参数,同时,还保持了各个线程和CoS的映射关系,即SrcID和CoS的映射关系。每个CoS对应的控制计算单元212也可以通过QoS控制管理寄存器214动态分配。例如,不妨设CoS共有x个等级,在本申请实施例中,可以使用到x个等级中的y个等级,则控制计算单元212中便有y个处于运行状态的控制计算单元212,y个处于运行状态的控制计算单元212与CoS的y个等级一一对应。
请参见图4,图4示出了单个控制计算单元212的示意性结构框图,控制计算单元212包括令牌发生器2121、令牌计数器2122以及限制率计算单元2123,令牌发生器2121与限制率计算单元2123均与令牌计数器2122连接。
令牌发生器2121用于按照自身对应的令牌的生成周期进行令牌的生成。其中,令牌的生成周期与访存指令的预设发送周期相同,访存指令的预设发送周期根据设定的访存带宽获得,访存带宽可以由用户根据线程的CoS进行设置。
可选地,在一种具体实施方式中,令牌发生器2121的令牌的生成过程可以通过如下方式进行计算:
不妨设LLC 140的频率为F GHz,线程的CoS的访存带宽为N*1/8GByte/S,上述线程在T个时钟周期内发送N个访存指令,且访存指令所请求的数据长度为64Byte,可以得到时钟周期与主频的关系为:
N*64Byte/T*F GHz=N*1/8GB/s
由上式,可得:T=512*F。
N个访存指令需要T个时钟周期发送,则一个访存指令的预设发送周期为T/N=512*F/N,令牌发生器2121的令牌的生成周期与访存指令的预设发送周期相同,为512*F/N。
可选地,令牌发生器2121可以是一个步进为1的计数器,每个时钟周期固定加1,当加到512*F/N个时钟周期时,输出一个令牌,同时计数器清零,从头开始累加。
可选地,令牌发生器2121也可以是一个步进可配置的计数器,例如,对访存带宽为N*1/8GByte/S,令牌发生器2121的步进可以配置为N,该计数器每个时钟周期累加N,直到计数器的值大于或等于T,输出一个令牌,同时计数器的值减去T,并重新开始累加。
在另一种具体实施方式中,T可以为2的整数次幂,例如,不妨设T为2048,且在T个时钟周期内发出M个访存指令,则有:
M*64Byte/2048*F GHz=N*1/8GB/s
由上式,可得:M=4*N/F。
因此,可以设置令牌发生器2121的计数器位宽为11位,计数器每时钟周期累加M,每当累加结果大于或等于2048时,会产生最高位的进位溢出,此时产生令牌输出。
应当理解,令牌发生器2121的令牌的生成过程除了通过上述方式进行以外,也可以通过其他方案来实现,令牌发生器2121的令牌的具体生成过程不应当理解为是对本申请的限制。
令牌计数器2122用于在接收到令牌发生器2121生成的令牌时,将令牌当前数量加一,并将令牌当前数量加一后的数量作为新的令牌当前数量;在接收到访存指令时,将令牌当前数量减一,并将令牌当前数量减一后的作为新的令牌当前数量。
可选地,为了避免负数令牌数的出现,可以为令牌计数器2122设置一个较大的初始固定值,该初始固定值可以根据LLC 140的缺失缓存队列的大小以及访存时延进行设置。例如,不妨设缺失缓存队列的大小是100,访存时延为100个时钟周期,则在单位时钟周期内,最多会有100个访存请求发出,则可以将初始固定值设置成一个大于100的数值,如256,从而就可以避免负数的令牌数的出现。
若令牌的数量在一段时间内维持在上述的初始固定值,则表明CoS对应的一个或多个线程的LLC 140访存指令的数目满足带宽配额;若令牌的数量少于初始固定值时,表明CoS对应的一个或多个线程使用的访存带宽过大;若令牌的数量大于初始固定值时,表明CoS对应的一个或多个线程使用的访存带宽不足。
限制率计算单元2123可以计算当前时钟周期内令牌初始数量与令牌当前数量的差值,并根据所述差值计算所述处理器核110支持的某一线程在预设时钟周期后发送访存指令的限制率。
可选地,在一种具体实施方式中,为了对某一线程进行限制,则令牌发生器2121发出的令牌可以携带有表征线程身份的标识信息,如核标识Core ID和线程标识TID,令牌计数器2122可以根据线程核标识Core ID和线程标识TID对不同的线程分别计算各自的差值。
可选地,在另一种具体实施方式中,令牌发生器2121的数量可以与线程的数量相同,令牌计数器2122的数量也可以与线程的数量相同,即每个线程各自对应有各自的令牌发生器和令牌计数器,此时,每个令牌计数器得到的令牌数量的差值便与各自的线程对应。
限制率计算单元2123计算限制率的具体过程在后文中进行详细描述。其中,若令牌初始数量大于令牌当前数量,差值为正数;若令牌初始数量小于令牌当前数量,差值为负数。
请参见图5,图5示出了多个处理器核110中的任一处理器核110的示意性结构框图,不妨以处理器核Core 0为例进行说明。
处理器核110包括指令输出逻辑模块111和执行/访存单元112,所述指令输出逻辑模块111与所述执行/访存单元112连接,所述指令输出逻辑模块111内设置有发射限制模块。由于处理器核110支持两个线程,因此,处理器核110中还包括有线程0的取址译码模块113以及线程1的取址译码模块114。发射限制模块也有两个,其中一个发射限制模块1111与线程0的取址译码模块连接,另一个发射限制模块1112与线程1的取址译码模块连接。可选地,发射限制模块的数量可以为多个,即发射限制模块可以与线程一一对应,发射限制模块的数量也可以为一个,即一个发射限制模块管理多个线程。
带宽控制设备210中的控制信号分配单元213具体用于将限制率转换为发射控制信号,并根据发射控制信号对应的线程,将发射控制信号发送给处理器核110中对应的发射限制模块。例如,若限制率与Core 0的线程0对应,则该限制率可以被转换为发射控制信号:限制率_T0,并且被发送到与线程0的取址译码模块连接的发射限制模块1111;若限制率与Core 0的线程1对应,则该限制率可以被转换为发射控制信号:限制率_T1,并且被发送到与线程1的取址译码模块连接的发射限制模块1112。发射限制模块用于根据限制率,限制指令输出逻辑模块111的发射速率,从而限制某一线程在预设时钟周期后发送访存指令的数量。其中,指令输出逻辑模块111可以通过分派指令的方式来输出指令,也可以通过发射指令的方式来输出指令,其输出指令的具体方式不应该理解为是对本申请的限制。
图6为本申请实施例提供的访存带宽控制方法的一种流程示意图,该访存带宽控制方法由上述的带宽控制设备210执行,图6示出的访存带宽控制方法包括如下步骤S110至步骤S130:
步骤S110,带宽控制设备210获取所述LLC 140向下级存储单元发送的第一访存指令。
其中,所述第一访存指令携带有生成所述第一访存指令的第一处理器核的第一核标识以及所述第一处理器核所运行的、生成所述第一访存指令的第一线程的第一线程标识。为了便于说明,不妨设第一访存指令来自于图2中的core 0的线程L0,即第一核标识为core 0,第一线程标识为L0。
身份信息为上文描述的SrcID,核标识为Core ID,线程标识为TID。
下级存储单元通常为DRAM,也可以是其他存储单元,例如内存,下级存储单元的具体类型不应该理解为是对本申请的限制。
访存指令被发往下级存储单元后,会在下级存储单元中,查找欲访问的特定数据是否在下级存储单元中被缓存,若上述的特定数据未缓存在下级存储单元,则称上述的特定数据在下级存储单元缺失;若上述的特定数据缓存在下级存储单元,则称上述的特定数据在下级存储单元命中。
步骤S120,带宽控制设备确定所述第一线程标识对应的第一处理优先级,并根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率。
处理优先级为上文所述的CoS,每个线程均有对应的CoS,可以是一个线程对应一个CoS,也可以是多个线程对应一个CoS。带宽控制设备210可以根据访存指令的SrcID,确定生成该访存指令的线程,并根据该线程对应的CoS,进行限制率的计算。
对于图2中的core 0的线程L0,可以根据线程与CoS的对应关系,确定出core 0的线程L0的CoS,不妨设为CoS10。带宽控制设备可以根据第一处理优先级CoS10确定出第一线程core 0的线程L0在预设时钟周期后发送访存指令的限制率。
步骤S130,带宽控制设备向所述第一处理器核发送所述限制率,指示所述处理器核根据所述限制率,限制所述第一线程在预设时钟周期后发送访存指令的数量。
接上文的举例继续说明,处理器核core 0可以根据带宽控制设备发送过来的限制率,对处理器核core 0支持的线程L0进行限制,具体表现为:限制线程L0在预设时钟周期后发送访存指令的数量。
带宽控制设备210可以获取LLC 140发出的访存指令,并从访存指令中获取生成该访存指令的线程的线程标识。根据线程标识,确定生成该访存指令的线程的处理优先级,进而根据处理优先级计算限制率,然后带宽控制设备210把限制率发送给访存指令来自的处理器核110。处理器核110可以根据限制率,限制单位时钟周期内同一线程发送访存指令的数量,该被限制的线程的处理优先级通常是较低的优先级。
通过上述方式,在处理器核110的环节,即处理器指令的分派阶段就实现了对低优先级的线程的访存带宽的限制,相应减少在多级cache中对低优先级的线程的访存带宽的限制;多级cache中的低优先级的线程生成的访存指令的减少,使得高优先级的线程生成访存指令在cache中可使用的缓存资源更多,从而实现兼顾对低优先级线程的带宽资源限制以及高优先级线程的顺畅运行。
请参见图7,图7示出了步骤S120的具体步骤的流程示意图,具体包括如下步骤S121至步骤S122:
步骤S121,带宽控制设备确定所述第一处理优先级对应的第一控制计算单元。
处理优先级与控制计算单元是一一对应的映射关系,不妨设与第一处理优先级CoS10对应的第一控制计算单元为图3中的控制计算单元1。
带宽控制设备210中的QoS控制管理寄存器214中保持有线程与处理优先级CoS的映射关系,也保持有CoS与控制计算单元212的对应关系,因此,可以先选出线程对应的CoS,再选出CoS对应的控制计算单元212,并将该控制计算单元212记为第一控制计算单元212。
步骤S122,带宽控制设备利用所述第一控制计算单元,计算所述第一线程在预设时钟周期后发送访存指令的限制率。
带宽控制设备210中的处于运行状态的控制计算单元212与线程标识对应的处理优先级一一对应。带宽控制设备210可以从处于运行状态的多个控制计算单元212中,选择出相应处理优先级的第一控制计算单元212,并利用该第一控制计算单元212实现限制率的计算。每个处于运行状态的控制计算单元212具备参数与处理优先级对应的元器件,从而计算出与处理优先级对应的限制率。
第一控制计算单元:控制计算单元1具体可以通过如下方式进行限制率的计算:
请参见图8,图8示出了步骤S122的具体步骤的流程示意图,具体包括如下步骤S1221至步骤S1223:
步骤S1221,令牌计数器在接收到所述令牌发生器为所述第一线程新生成的令牌时,将所述第一线程的令牌当前数量加一。
步骤S1222,令牌计数器在所述LLC向下级存储单元发送所述第一线程的访存指令时,将所述第一线程的令牌当前数量减一。
其中,所述目标访存指令的线程标识对应的处理优先级与所述第一控制计算单元212相对应。
步骤S1223,限制率计算单元计算当前时钟周期内所述第一线程的令牌初始数量与所述第一线程的令牌当前数量的差值,并根据所述差值计算所述第一线程在预设时钟周期后发送访存指令的限制率。
若令牌初始数量大于令牌当前数量,差值为正数;若令牌初始数量小于令牌当前数量,差值为负数。
第一控制计算单元212包括的令牌发生器2121的令牌生成周期可以与访存指令的预设发送周期相同,上述的预设发送周期可以根据设定的访存带宽获得,访存带宽可以由用户根据线程的处理优先级进行设置。令牌计数器2122可以在接到令牌发生器2121新生成的令牌时,将令牌当前数量加一;在接收到访存指令时,将令牌当前数量减一。通过上述方式,限制率计算单元2123可以得到在当前时钟周期的时间段中,令牌数量的变化趋势和变化值;并依据令牌数量的变化趋势和变化值,计算限制率。由于访存带宽可以根据线程的处理优先级进行设置,使得计算出的限制率与处理优先级相关,从而可以实现对不同处理优先级的线程的区分对待,提高处理效率
可选地,步骤S1223具体可以通过如下方式进行限制率的计算:所述限制率计算单元根据当前时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,与最近的一个或多个时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,计算限制率变化量;所述限制率计算单元计算历史限制率与所述限制率变化量的加和,所述加和为所述第一线程在预设时钟周期后发送访存指令的限制率。
最近的多个时钟周期可以为两个或两个以上,为了便于说明,不妨以两个时钟周期为例:
例如,不妨引入Err0、Err1、Err2,其中,Err0表示当前时钟周期中,令牌初始数量与所述令牌当前数量的差值;Err1表示前一时钟周期中,所述令牌初始数量与所述令牌当前数量的差值;Err2表示前二时钟周期中,所述令牌初始数量与所述令牌当前数量的差值。
Err1的值可以由Err0锁存一个时钟周期获得,Err2的值可以由Err1锁存一个时钟周期获得。
在确定出Err0、Err1、Err2后,根据公式:
Throttle_Value_delta=K0*Err0+K1*Err1+K2*Err2计算限制率变化量Throttle_Value_delta。其中,K0、K1、K2为三个参数,可以通过多次实验验证获得,为了便于计算,K0、K1、K2均可以为2的整数幂。
在计算出限制率变化量Throttle_Value_delta后,可以根据公式:
Throttle_Value=Throttle_Value_d1+Throttle_Value_delta计算处理器核110在预设时钟周期后发送访存指令的限制率Throttle_Value。其中,Throttle_Value_d1为历史限制率,可以由Throttle_Value锁存一个时钟周期获得。
依据当前时钟周期的令牌差值以及历史时钟周期的令牌差值计算出限制率变化率,然后再计算限制率变化率与历史限制率的加和,从而得到新的限制率,该限制率为处理器核110在预设时钟周期后发送访存指令的限制率。结合历史数据进行限制率的计算,使得限制率更加符合访存带宽控制的需要。
可选地,在一种具体实施方式中,在计算出限制率Throttle_Value后,还可以根据限制率Throttle_Value与限制数量的对应关系,确定出具体的限制数量。本申请计算出限制率后,用于根据限制率,限制预设时钟周期后的单位时钟周期内发送访存指令的同一线程发送访存指令的数量。因此,可以根据限制率Throttle_Value与限制数量的对应关系,明确出具体的限制数量。
例如,限制率Throttle_Value可以对应有如下五个映射区间:(0,1/8*max_rate],(1/8*max_rate,3/8*max_rate],(3/8*max_rate,5/8*max_rate],(5/8*max_rate,7/8*max_rate],(7/8*max_rate,max_rate]。其中,(0,1/8*max_rate]对应的限制数量为0,(1/8*max_rate,3/8*max_rate]对应的限制数量为1,(3/8*max_rate,5/8*max_rate]对应的限制数量为2,(5/8*max_rate,7/8*max_rate]对应的限制数量为3,(7/8*max_rate,max_rate]对应的限制数量为4。max_rate为用户设定值,该设定值可以通过多次实验获得。
即若限制率Throttle_Value落在映射区间:(0,1/8*max_rate]内,对应的限制数量为0,即处理器核110不需对该限制率所对应的线程进行限制;
若限制率Throttle_Value落在映射区间:(1/8*max_rate,3/8*max_rate]内,对应的限制数量为1,即处理器核110需要对该限制率所对应的线程进行限制,具体限制为:使得该限制率所对应的线程在单位时钟周期内发送的访存指令的数量较设定值减少1;
若限制率Throttle_Value落在映射区间:(3/8*max_rate,5/8*max_rate]内,对应的限制数量为2,即处理器核110需要对该限制率所对应的线程进行限制,具体限制为:使得该限制率所对应的线程在单位时钟周期内发送的访存指令的数量较设定值减少2;
若限制率Throttle_Value落在映射区间:(5/8*max_rate,7/8*max_rate]内,对应的限制数量为3,即处理器核110需要对该限制率所对应的线程进行限制,具体限制为:使得该限制率所对应的线程在单位时钟周期内发送的访存指令的数量较设定值减少3;
若限制率Throttle_Value落在映射区间:(7/8*max_rate,max_rate]内,对应的限制数量为4,即处理器核110需要对该限制率所对应的线程进行限制,具体限制为:使得该限制率所对应的线程在单位时钟周期内发送的访存指令的数量较设定值减少4。
其中,线程在单位时钟周期内发送的访存指令的设定值可以根据多线程控制器***的实际需求设置,例如,不妨设设定值为4。应当理解,上述的设定值还可以为其他数值,其具体数值不应该理解为是对本申请的限制。
在本申请实施例提供的一种具体实施方式中,带宽控制设备210计算出的限制率除了可以发送给指令输出逻辑模块111中的发射限制模块以外,还可以发送给处理器核110中的取指单元,也可以发送给多级cache中的预取单元,动态控制上述单元的运行速度,从而达到控制该限制率对应的线程在LLC 140的访存带宽的目的。
由于本发明限制的都是线程独有的资源,因此当一个低优先级的线程受到控制后,高优先级就可以使用线程间共享的资源,如LLC 140带宽资源,从而实现较高的性能。同时,对线程的控制发生在处理器核110的环节,即处理器指令的分派阶段(Dispatch/issue),避免了线程间的相互干扰,可以让低优先级的线程空出资源,提高高优先级线程的执行性能。
在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种带宽控制设备,其特征在于,所述带宽控制设备分别与多级高速缓存cache中的最后一级高速缓存LLC以及至少一个处理器核连接,所述至少一个处理器核支持多线程,所述至少一个处理器核与所述多级cache相通信;
所述带宽控制设备用于获取所述LLC向下级存储单元发送的第一访存指令,其中,所述第一访存指令携带有生成所述第一访存指令的第一处理器核的第一核标识以及所述第一处理器核所运行的、生成所述第一访存指令的第一线程的第一线程标识;
所述带宽控制设备用于确定所述第一线程标识对应的第一处理优先级,并根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率;所述限制率为用于限制单位时钟周期内同一线程可发送访存指令的数量的信息;
所述带宽控制设备用于向所述第一处理器核发送所述限制率,指示所述处理器核根据所述限制率,限制所述第一线程在预设时钟周期后发送访存指令的数量。
2.根据权利要求1所述的带宽控制设备,其特征在于,所述带宽控制设备包括多个控制计算单元,所述多个控制计算单元中的至少一个处于运行状态,处于运行状态的控制计算单元的数量与多线程处理器***支持的所有线程的所有处理优先级的数量相同,处于运行状态的控制计算单元与所述处理优先级一一对应;
所述带宽控制设备用于确定所述第一处理优先级对应的第一控制计算单元;
所述带宽控制设备用于利用所述第一控制计算单元,计算所述第一线程在预设时钟周期后发送访存指令的限制率。
3.根据权利要求2所述的带宽控制设备,其特征在于,所述第一控制计算单元包括令牌发生器、令牌计数器以及限制率计算单元,所述令牌发生器与所述限制率计算单元均与所述令牌计数器连接;
其中,所述令牌发生器用于为属于第一优先级的每一个线程生成对应令牌,生成令牌的生成周期与所述第一优先级对应的访存指令的预设发送周期相同;
所述令牌计数器用于在接收到所述令牌发生器为所述第一线程新生成的令牌时,将所述第一线程的令牌当前数量加一;
所述令牌计数器还用于在所述LLC向下级存储单元发送所述第一线程的访存指令时,将所述第一线程的令牌当前数量减一;
所述限制率计算单元用于计算当前时钟周期内所述第一线程的令牌初始数量与所述第一线程的令牌当前数量的差值,并根据所述差值计算所述第一线程的在预设时钟周期后发送访存指令的限制率。
4.根据权利要求3所述的带宽控制设备,其特征在于,
所述限制率计算单元用于根据当前时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,与最近的一个或多个时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,计算限制率变化量;
所述限制率计算单元用于计算历史限制率与所述限制率变化量的加和,所述加和为所述第一线程在预设时钟周期后发送访存指令的限制率。
5.一种多线程处理器***,其特征在于,包括至少一个处理器核、多级高速缓存cache以及如权利要求1-4任一项所述的带宽控制设备,所述至少一个处理器核支持多线程,所述至少一个处理器核与所述多级cache相通信,所述多级cache包括最后一级高速缓存LLC,所述LLC以及所述至少一个处理器核均与所述带宽控制设备连接。
6.根据权利要求5所述的多线程处理器***,其特征在于,所述处理器核包括指令输出逻辑模块和执行/访存单元,所述指令输出逻辑模块与所述执行/访存单元连接,所述指令输出逻辑模块内设置有发射限制模块;
所述处理器核中的发射限制模块用于接收所述带宽控制设备发送的限制率,指示所述发射限制模块根据限制率限制所述第一线程在预设时钟周期后发送访存指令的数量。
7.一种访存带宽控制方法,其特征在于,应用于权利要求5-6任一项所述的多线程处理器***,所述方法包括:
带宽控制设备获取LLC向下级存储单元发送的第一访存指令,其中,所述第一访存指令携带有生成所述第一访存指令的第一处理器核的第一核标识以及所述第一处理器核所运行的、生成所述第一访存指令的第一线程的第一线程标识;
所述带宽控制设备确定所述第一线程标识对应的第一处理优先级,并根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率;所述限制率为用于限制单位时钟周期内同一线程可发送访存指令的数量的信息;
所述带宽控制设备向所述第一处理器核发送所述限制率,指示所述处理器核根据所述限制率,限制所述第一线程在预设时钟周期后发送访存指令的数量。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一处理优先级确定所述第一线程在预设时钟周期后发送访存指令的限制率,包括:
所述带宽控制设备确定所述第一处理优先级对应的第一控制计算单元;
所述带宽控制设备利用所述第一控制计算单元,计算所述第一线程在预设时钟周期后发送访存指令的限制率。
9.根据权利要求8所述的方法,其特征在于,所述带宽控制设备利用所述第一控制计算单元,计算处理器核在预设时钟周期后发送访存指令的限制率,包括:
令牌计数器在接收到令牌发生器为所述第一线程新生成的令牌时,将所述第一线程的令牌当前数量加一;
所述令牌计数器在所述LLC向下级存储单元发送所述第一线程的访存指令时,将所述第一线程的令牌当前数量减一;
限制率计算单元计算当前时钟周期内所述第一线程的令牌初始数量与所述第一线程的令牌当前数量的差值,并根据所述差值计算所述第一线程在预设时钟周期后发送访存指令的限制率。
10.根据权利要求9所述的方法,其特征在于,所述根据所述差值计算所述第一线程在预设时钟周期后发送访存指令的限制率,包括:
所述限制率计算单元根据当前时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,与最近的一个或多个时钟周期中所述第一线程的所述令牌初始数量与所述第一线程的所述令牌当前数量的差值,计算限制率变化量;
所述限制率计算单元计算历史限制率与所述限制率变化量的加和,所述加和为所述第一线程在预设时钟周期后发送访存指令的限制率。
11.根据权利要求7所述的方法,其特征在于,所述带宽控制设备向所述第一处理器核发送所述限制率,包括:
所述带宽控制设备向所述第一处理器核中的发射限制模块发送限制率,指示所述发射限制模块根据限制率限制所述第一线程在预设时钟周期后发送访存指令的数量。
CN202010991780.6A 2020-09-18 2020-09-18 带宽控制设备、多线程控制器***及访存带宽控制方法 Active CN112083957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010991780.6A CN112083957B (zh) 2020-09-18 2020-09-18 带宽控制设备、多线程控制器***及访存带宽控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010991780.6A CN112083957B (zh) 2020-09-18 2020-09-18 带宽控制设备、多线程控制器***及访存带宽控制方法

Publications (2)

Publication Number Publication Date
CN112083957A CN112083957A (zh) 2020-12-15
CN112083957B true CN112083957B (zh) 2023-10-20

Family

ID=73739256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010991780.6A Active CN112083957B (zh) 2020-09-18 2020-09-18 带宽控制设备、多线程控制器***及访存带宽控制方法

Country Status (1)

Country Link
CN (1) CN112083957B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113505084B (zh) * 2021-06-24 2023-09-12 中国科学院计算技术研究所 基于访存和性能建模的内存资源动态调控方法及***
CN113821324B (zh) * 2021-09-17 2022-08-09 海光信息技术股份有限公司 处理器的高速缓存***、方法、设备和计算机介质
CN114840270A (zh) * 2022-05-09 2022-08-02 珠海全志科技股份有限公司 ***总线带宽调整方法、计算机装置及计算机可读存储介质
CN117170957A (zh) * 2022-05-26 2023-12-05 华为技术有限公司 一种控制装置、控制方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716183A (zh) * 2004-06-30 2006-01-04 中国科学院计算技术研究所 一种应用于同时多线程处理器的取指控制装置及其方法
CN1987825A (zh) * 2005-12-23 2007-06-27 中国科学院计算技术研究所 利用路预测技术的多线程处理器的取指方法及***
CN101763251A (zh) * 2010-01-05 2010-06-30 浙江大学 多线程微处理器的指令译码缓冲装置
CN110032266A (zh) * 2018-01-10 2019-07-19 广东欧珀移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477526B2 (en) * 2013-09-04 2016-10-25 Nvidia Corporation Cache utilization and eviction based on allocated priority tokens

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716183A (zh) * 2004-06-30 2006-01-04 中国科学院计算技术研究所 一种应用于同时多线程处理器的取指控制装置及其方法
CN1987825A (zh) * 2005-12-23 2007-06-27 中国科学院计算技术研究所 利用路预测技术的多线程处理器的取指方法及***
CN101763251A (zh) * 2010-01-05 2010-06-30 浙江大学 多线程微处理器的指令译码缓冲装置
CN110032266A (zh) * 2018-01-10 2019-07-19 广东欧珀移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质

Also Published As

Publication number Publication date
CN112083957A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
CN112083957B (zh) 带宽控制设备、多线程控制器***及访存带宽控制方法
US8180941B2 (en) Mechanisms for priority control in resource allocation
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
CN103210382B (zh) 基于总线装置健康信息和相关功率管理而仲裁通信总线上的总线事务
US7054968B2 (en) Method and apparatus for multi-port memory controller
CN110753131A (zh) 微服务分布式限流方法及装置、存储介质和电子设备
US11489735B2 (en) Dynamic network allocation apparatus, dynamic network allocation method and non-transitory computer-readable medium
US20070022416A1 (en) Execution device and application program
KR20100113175A (ko) 전력/성능 균형을 개선하기 위한 멀티코어 메모리 열 억제 알고리즘
CN113742114A (zh) 一种***限流的方法和装置
CN110221775B (zh) 存储***中令牌的分配方法和装置
US20130042252A1 (en) Processing resource allocation within an integrated circuit
CN111338785A (zh) 资源调度方法及装置、电子设备、存储介质
US8028291B2 (en) Method and computer program product for job selection and resource allocation of a massively parallel processor
CN115269190A (zh) 内存分配方法、装置、电子设备、存储介质及产品
Shen et al. Goodbye to fixed bandwidth reservation: Job scheduling with elastic bandwidth reservation in clouds
Lin et al. Coordinated CTA combination and bandwidth partitioning for GPU concurrent kernel execution
CN101196833B (zh) 用于存储器利用的方法和装置
Zhou et al. Calcspar: A {Contract-Aware}{LSM} Store for Cloud Storage with Low Latency Spikes
CN113886305B (zh) 一种基于总线的仲裁方法、***、存储介质及设备
CN104917692B (zh) 一种分发令牌的方法和装置
CN112099974B (zh) 多线程处理器***及访存带宽控制方法
JPH10143382A (ja) 共有メモリ型マルチプロセッサシステムの資源管理方法
CN111459651A (zh) 一种负载均衡方法、装置、存储介质及调度***

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