CN102939596B - 用于多核处理器的多线程应用识别存储器调度方案 - Google Patents

用于多核处理器的多线程应用识别存储器调度方案 Download PDF

Info

Publication number
CN102939596B
CN102939596B CN201180028331.0A CN201180028331A CN102939596B CN 102939596 B CN102939596 B CN 102939596B CN 201180028331 A CN201180028331 A CN 201180028331A CN 102939596 B CN102939596 B CN 102939596B
Authority
CN
China
Prior art keywords
threads
sets
thread
rank
relevant
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
CN201180028331.0A
Other languages
English (en)
Other versions
CN102939596A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN102939596A publication Critical patent/CN102939596A/zh
Application granted granted Critical
Publication of CN102939596B publication Critical patent/CN102939596B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Abstract

一种设备可包括存储器控制器,其识别多线程应用,并基于对所述多线程应用的识别调整用于所述多线程应用的存储器调度方案。

Description

用于多核处理器的多线程应用识别存储器调度方案
背景技术
向多/许多核(多核)处理器的转变已使多线程应用在客户端和服务器平台上都很流行。此类应用的高线程级并行(TLP)有效地利用了多核处理器(如芯片多处理器(CMP)系统)支持的硬件并行。存在对于加速多线程应用的执行的软件和硬件提议,例如一起执行应用的线程的操作系统的协调线程调度。然而,没有提议解决用于多线程应用的存储器调度(如由存储器控制器)中可使性能显著降级的性能问题。
诸如先就绪先来到先服务(FRFCFS)机制和并行识别批量调度(PAR-BS)机制的一些机制试图改善存储器控制器的性能。例如,FRFCFS机制通过调度访问存储体的行缓冲器的存储器请求来提高存储器控制器的性能。PAR-BS机制将存储器请求分批,一批一批地执行存储器请求,并且通过对每个批次应用最短作业优先法(SJF)调度来改善存储器控制器的性能。然而,这两种机制只优化了用于单线程应用的存储器调度,而不能优化用于多线程应用的存储器调度。
发明的实施例的概要
根据一个实施例,一种计算设备实现的方法可包括由计算设备识别多线程应用和由计算设备基于对多线程应用的识别调整用于多线程应用的存储器调度方案。
根据一个方面,多线程应用可与第一组相关;识别多线程应用可包括接收与第一组相关的多线程应用的线程;并且该方法还可包括接收与第二组相关的单线程应用的线程。
根据另一方面,调整存储器调度方案可包括确定第一组和第二组中的空闲线程的数量;基于确定的第一组中的空闲线程的数量对第一组进行排名;基于确定的第二组中的空闲线程的数量对第二组进行排名;以及使与第一组和第二组中排名较高的一个组相关的存储器请求优先于与第一组和第二组中排名较低的一个组相关的存储器请求。
根据另一个实施例,设备的存储器控制器可包括用来接收与组相关的多线程应用的线程以及接收与其它组相关的单线程应用的线程的处理逻辑。该处理逻辑还可确定所述组和所述其它组中空闲线程的数量;基于确定的所述组中的空闲线程的数量对所述组进行排名;以及基于确定的所述其它组中的空闲线程的数量对所述其它组进行排名。处理逻辑还可使与所述组和所述其它组中排名较高的一个组相关的存储器请求优先于与所述组和所述其它组中排名较低的一个组相关的存储器请求。
根据又一个实施例,设备可包括用来识别多线程应用并基于对多线程应用的识别调整用于多线程应用的存储器调度方案的存储器控制器。
根据又一个实施例,一种计算机可读存储设备可存储一个或多个计算机可执行指令,并且可包括用来从一组其它应用中识别多线程应用的一个或多个指令以及用来基于对多线程应用的识别调整用于多线程应用的存储器调度方案的一个或多个指令。
附图简述
并入本说明书中并构成本说明书的一部分的附图示出了本文描述的一个或多个实施例,并且与其它描述一起对这些实施例进行了解释。其中:
图1是经历性能降级的示例性存储器调度布置的示意图;
图2是可根据本文描述的实施例的可执行多线程应用识别存储器调度方案的设备的示例性组件的示意图;
图3是图2中描述的设备的处理单元和主存储器的示例性组件的示意图;
图4是图3中描述的处理单元的存储器控制器的示例性功能组件的示意图;
图5是图4中描述的存储器控制器的线程组接收器的示例性功能组件的示意图;
图6是图4中描述的存储器控制器的空闲线程检测器的示例性功能组件的示意图;
图7是图4中描述的存储器控制器的组排名器的示例性功能组件的示意图;
图8是图4中描述的存储器控制器的存储器调度器的示例性功能组件的示意图;
图9A和图9B是能够由图5中描述的线程组接收器执行的示例性操作的示意图;
图10A和图10B是能够由图6中描述的空闲线程检测器执行的示例性操作的示意图;
图11是能够由图7中描述的组排名器执行的示例性操作的示意图;
图12A和图12B是能够由图8中描述的存储器调度器执行的示例性操作的示意图;
图13-图15是根据本文描述的实施例的用于多线程应用识别存储器调度的示例性过程的流程图。
具体实施方式
以下详细描述参考附图。不同附图中的相同参考数字可标识相同或相似的元件。此外,以下详细描述不限制本发明。
概述
本文描述的系统和/或方法可使设备(如带有多核处理器的设备,例如个人计算机、膝上型计算机、平板计算机、服务器设备、手持或移动设备和/或其它类型的计算或通信设备)的存储器控制器能够识别一个或多个多线程应用,并基于对多线程应用的识别调整或优化用于多线程应用的存储器调度方案。此类系统和/或方法可防止归因于不充足的存储器调度的(如设备中的)性能降级。在一个实施例中,存储器控制器可接收与第一组相关的多线程应用的线程,并可接收与第二组相关的单线程应用的线程。存储器控制器可确定第一和第二组中的空闲线程的数量,可基于空闲线程的数量对第一组和第二组进行排名,并可使来自具有较高排名的组的存储器请求优先于来自具有较低排名的组的存储器请求。
如本文所使用的,术语“线程”旨在被宽泛地解释为包括允许应用执行顺序的动作或一次执行许多动作的计算机程序(或应用)的部分(如任务)。应用中的每个线程可识别在被应用指示时执行的进程。
如本文所使用的,术语“组件”和“设备”旨在被宽泛地理解为包括硬件(如处理器、微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、芯片、存储设备(如只读存储器(ROM)、随机存取存储器(RAM)等)等)或硬件和软件的组合(如执行存储设备中包含的软件的处理器、微处理器、ASIC等)。
示例性存储器调度布置
图1是经历性能降级的示例性存储器调度布置100的示意图。如图所示,单线程应用(如APP_A)可包括与多核处理器的第一存储体(如BANK1)和第一核(如CORE_1)相关的两个存储器请求。多线程应用(如APP_B)可包括两个线程(如线程APP_B1和APP_B2)和用于同步的障碍。在一个实例中,用于同步的障碍可指示多核处理器对在障碍之前和之后提供的存储器请求实施排序约束。线程APP_B1可与多核处理器的第二核(如CORE_2)相关,可包括在障碍之后提供的两个存储器请求,并可包括在障碍之前提供的且与第一存储体BANK1相关的三个存储器请求。线程APP_B2可与多核处理器的第三核(如CORE_3)相关,并可包括在障碍之后提供的两个存储器请求。
多线程应用APP_B可被设计为通过使线程APP_B1访问第一存储体BANK1且使线程APP_B2访问第二存储体BANK2来利用存储体级并行。由于在障碍周围可能的负载不平衡(如由于实现完美的运行时负载平衡可能很难而可能发生这种情况),线程APP_B2可在线程APP_B1之前到达障碍。负载不平衡可阻止与线程APP_B2相关的存储器请求访问第二存储体BANK2,从而可导致第三核CORE_3处于空闲状态。第三核CORE_3可保持在空闲状态,直到与线程APP_B1相关的(如在障碍之下提供的)三个存储器请求被处理。因此,与线程APP_B1相关的(如在障碍之下提供的)三个存储器请求应被赋予高于与单线程应用APP_A相关的存储器请求的优先级(如使得第三核CORE_3保持空闲达三个周期)。
然而,当前存储器调度方案不识别多线程应用且试图调度存储器请求以加速语义地阻止多线程应用的其它线程取得进展的同一多线程应用的线程。例如,由于障碍,线程APP_B1可阻止线程APP_B2取得进展。如果在布置100中采用FRFCFS存储器调度方案,则由于单线程应用APP_A具有高于线程APP_B1的行缓冲器命中率,FRFCFS方案可使性能降级。在FRFCFS方案中,命中行缓冲器的存储器请求可被优先化。因此,单线程应用APP_A的存储器请求可优先于线程APP_B1的存储器请求,因为单线程应用APP_A的存储器请求与第一存储体BANK1的相同行(如行1)相关,而线程APP_B1的存储器请求与第一存储体BANK1的不同行(如行2-4)相关。这可将第三核CORE_3的空闲时间从三个周期增加到五个周期,并可阻止第三核CORE_3在障碍之后执行多线程应用APP_B。
如果布置100中采用PAR-BS存储器调度方案,则根据最短作业优先法(SJF)策略,PAR-BS方案可将具有最少数量的存储器请求的线程的存储器请求在存储器请求队列中优先化。因此,单线程应用APP_A的存储器请求可优先于线程APP_B1的存储器请求,因为单线程应用APP_A的存储器请求的数量为二,而线程APP_B1的存储器请求的数量为三。这可将第三核CORE_3的空闲时间从三个周期增加到五个周期,并可阻止第三核CORE_3在障碍之后执行多线程应用APP_B。FRFCFS和PAR-BS存储器调度方案以及其它存储器调度方案不识别多线程应用,使性能降级,并使操作系统对协调线程调度的努力徒劳。
相反,本文描述的系统和/或方法可使设备的存储器控制器能够识别一个或多个多线程应用,并基于对多线程应用的识别优化用于多线程应用的存储器调度方案。例如,本文描述的系统和/或方法可将可使一组线程而不是仅单个线程受益的存储器请求优先化(如服务于线程APP_B1的请求以使线程APP_B1和线程APP_B2都受益)。
示例性设备配置
图2是根据本文描述的实施例的可执行多线程应用识别存储器调度方案的设备200的示例性组件的示意图。设备200可包括利用多核处理器和/或多线程应用的任何计算或通信设备。例如,设备200可包括个人计算机、台式计算机、膝上型计算机、平板计算机、服务器设备、无线电话、个人通信系统(PCS)终端、个人数字助理(PDA)、蜂窝电话、智能电话和/或其它类型的计算或通信设备。
如图2所示,设备200可包括总线210、处理单元220、主存储器230、ROM240、存储设备250、输入设备260、输出设备270和/或通信接口280。总线210可包括允许设备200的组件之间通信的路径。
处理单元220可包括一个或多个处理器(如多核处理器)、微处理器或可解释并执行指令的其它类型的处理单元。在一个实施例中,处理单元220可包括其包括多个核的单个处理器。主存储器230可包括RAM、动态RAM(DRAM)和/或可存储供处理单元220执行的信息和指令的另一类型的动态存储设备。ROM240可包括ROM设备或可存储供处理单元220使用的静态信息和/或指令的另一类型的静态存储设备。存储设备250可包括磁和/或光学记录介质及其对应的驱动器。
输入设备260可包括允许操作者向设备200输入信息的机制,例如键盘、鼠标、笔、麦克风、语音识别和/或生物特征机制、触摸屏等。输出设备270可包括向操作者输出信息的机制,包括显示器、打印机、扬声器等。通信接口280可包括使设备200能够与其它设备和/或系统通信的任何收发器类的机制。例如,通信接口280可包括用于通过网络与另一设备或系统通信的机制。
如本文所述,设备200可响应于处理单元220执行包含在计算机可读介质(例如主存储器230)中的软件指令而执行某些操作。计算机可读介质可被定义为物理或逻辑存储设备。逻辑存储设备可包括单个物理存储设备内或分布在多个物理存储设备间的存储空间。软件指令可从另一计算机可读介质(例如存储设备250)或通过通信接口280从另一设备读入到主存储器230中。包含在主存储器230中的软件指令可使处理单元220执行本文描述的过程。或者,硬连线电路可代替或结合软件指令用来实现本文描述的过程。因此,本文描述的实施例不限于硬件电路和软件的任何特定组合。
尽管图2示出了设备200的示例性组件,但在其它实施例中,相对于图2所示,设备200可包括更少的组件、不同的组件、以不同方式布置的组件或附加的组件。或者或另外,设备200的一个或多个组件可执行被描述为由设备200的一个或多个其它组件执行的一个或多个其它任务。
图3是设备200的处理单元220和主存储器230的示例性组件的示意图。在一个实施例中,图3所示的组件可形成存储器调度布置300。如图所示,处理单元220可包括多个核310-1、310-2、310-3等(在本文统称为“核310”)和存储器控制器320。主存储器230可包括多个存储器存储体330-1、330-2等(在本文统称为“存储体330”)。
核310可集成到单个集成电路管芯(如芯片多处理器(CMP))上或可集成到单个芯片封装中的多个管芯上。核310中的每个核可包括处理器、微处理器或可解释并执行指令的另一类型的处理单元。
存储器控制器320可包括一个或多个处理器、微处理器、ASIC、FPGA或可解释并执行(如包含在存储器控制器320的计算机可读介质中的)指令的其它类型的处理逻辑,以便执行本文描述的操作。在一个实施例中,存储器控制器320可包括管理去往或来自主存储器230的数据流的数字电路。存储器控制器320可为单独的芯片,或可集成到另一芯片中,例如在处理单元220的管芯上。存储器控制器320可包括逻辑,其用来从主存储器230读取和向其写入以及通过发送经过主存储器230的电流来刷新主存储器230。可通过使用多路复用器和多路分用器来促进从主存储器230读取和向其写入。存储器控制器320可选择主存储器230的正确的行和列地址,作为向多路复用器的输入。多路分用器可选择主存储器230的正确的存储器位置,并可返回与该存储器位置相关的数据。在另一实施例中,存储器控制器320可为处理单元220的功能组件。
存储体330中的每个可包括存储在主存储器230中的数据的个别部分。在一个实例中,存储体330中的每个可包含临时存储的数据并用作存储器缓存。存储体330可连续地排序,从而可提供对存储在主存储器230中的个别项目的容易访问。存储体330中的每个可包括可被设计为独立处理信息传输的主存储器230的物理部分。
如图3中进一步所示,存储器控制器320可提供用于单线程应用(APP_A)340和包括两个线程(如线程(APP_B1)350-1和线程(APP_B2)350-2)的多线程应用(APP_B)350的存储器调度方案。单线程应用340可由核310-1执行且可与存储体330-1相关。线程350-1可由核310-2执行且可与存储体330-1相关。线程350-2可由核310-3执行且可与存储体330-2相关。因此,图3所示的存储器调度布置300可类似于图1所示的存储器调度布置100。
然而,与传统的存储器调度方案(如上文参照图1所述的)不同,存储器控制器320可提供成本有效的存储器调度方案,其在多线程应用(如多线程应用350)包括空闲线程时将多线程应用的线程(如线程350-1和350-2)优先化。为了解释的目的,假定多线程应用350包括空闲线程(如线程350-2可以是空闲的)。线程可出于几种原因而空闲。例如,如上文参照图1所述,在障碍处的负载不平衡可使在较早的时间到达障碍的线程空闲。在另一实例中,被锁定保护的关键部分可只允许多线程应用的一个线程进入,而等待进入该关键部分的(如多线程应用的)其它线程变得空闲。在又一个实例中,多线程应用的在算法上顺序的区域可由多线程应用的单个线程执行,从而可使多线程应用的其它线程空闲。通过使具有空闲线程的多线程应用的线程优先化,存储器控制器320可帮助空闲线程迅速结束无效率的执行阶段并使多线程应用返回到所有线程被并行地完全执行的执行阶段。
在一个实施例中,存储器控制器320可接收(如与通过操作系统与第一组相关的)多线程应用350的线程350-1和350-2,并可接收(如通过操作系统与第二组相关的)单线程应用340的线程。存储器控制器320可确定第一和第二组中空闲线程(如线程350-2)的数量,并基于该空闲线程的数量对第一组和第二组进行排名。例如,由于第一组可能包括空闲线程(如线程350-2)而第二组可能不包括空闲线程,所以存储器控制器320可使第一组的排名高于第二组。存储器控制器320可使来自具有较高排名的组的存储器请求优先于来自具有较低排名的组的存储器请求。例如,存储器控制器320可使来自第一组(如来自线程350-2)的存储器请求优先于来自第二组(如来自单线程应用340)的存储器请求。
尽管图3示出了处理单元220和主存储器230的示例性组件,但在其它实施例中,相对于图3所示,处理单元220和/或主存储器230可包括更少的组件、不同的组件、以不同方式布置的组件或附加的组件。或者或另外,处理单元220和/或主存储器230的一个或多个组件可执行被描述为由处理单元220和/或主存储器230的一个或多个其它组件执行的一个或多个其它任务。
示例性存储器控制器配置
图4是存储器控制器320的示例性功能组件的示意图。在一个实施例中,结合图4所描述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图4所示,存储器控制器320可包括线程组接收器400、空闲线程检测器410、组排名器420和存储器调度器430。
线程组接收器400可包括可接收与一个或多个应用相关的一个或多个线程440并可产生线程440的线程组信息450-1(如针对由设备200的操作系统定义的第一线程组)和线程组信息450-2(如针对由设备200的操作系统定义的第二线程组)的硬件或硬件和软件的组合。例如,线程组接收器400可产生单线程应用的线程的线程组信息450-1并可产生多线程应用的线程的线程组信息450-2。如图4所示,线程组接收器400可将线程组信息450-1(如针对第一定义的线程组)和线程组信息450-2(如针对第二定义的线程组)提供到空闲线程检测器410和组排名器420。下文将结合例如图5提供线程组接收器400更多详细信息。
空闲线程检测器410可包括可接收来自线程组接收器400的线程组信息450-1和450-2并可接收与线程440相关的一个或多个存储器请求460的硬件或硬件和软件的组合。空闲线程检测器410可基于线程组信息450-1/450-2和存储器请求460确定线程440中的哪些线程是空闲的,并可将所确定的空闲线程提供到组排名器420,如参考数字470所指示。下文将结合例如图6提供空闲线程检测器410的更多详细信息。
组排名器420可包括可接收来自线程组接收器400的线程组信息450-1和450-2并可接收来自空闲线程检测器410的空闲线程470的硬件或硬件和软件的组合。组排名器420可基于每个线程组中的空闲线程470的数量对(如由线程组信息450-1和450-2所定义的)线程组中的线程进行排名。组排名器420可将线程组的排名提供到存储器调度器430,如参考数字480所指示。下文将结合例如图7提供组排名器420的更多详细信息。
存储器调度器430可包括可接收来自组排名器420的线程组排名480并可接收与线程440相关的一个或多个存储器请求460的硬件或硬件和软件的组合。存储器调度器430可基于线程组排名480将存储器请求460优先化,如参考数字490所指示,并可在设备200中实现经过优先化的存储器请求490。下文将结合例如图8提供存储器调度器430的更多详细信息。
尽管图4示出了存储器控制器320的示例性功能组件,但在其它实施例中,相对于图4中所示,存储器控制器320可包括更少的功能组件、不同的功能组件、以不同方式布置的功能组件或附加的功能组件。或者或另外,存储器控制器320的一个或多个功能组件可执行被描述为由存储器控制器320的一个或多个其它功能组件执行的一个或多个其它任务。
图5是存储器控制器320的线程组接收器400的示例性功能组件的示意图。在一个实施例中,结合图5所述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图5所示,线程组接收器400可包括每核组标识(ID)寄存器500。
每核组ID寄存器500可包括可接收例如来自设备200的操作系统的线程信息510和组ID信息520的硬件或硬件和软件的组合。在一个实例中,当一起执行同一应用的线程时,操作系统可产生线程信息510(如用于协调线程调度)。组ID信息520可包括在每个核(如核310中的每个核)上被执行的线程的组ID。当操作系统在核(如核310中的一个核)上调度特定线程时,操作系统可用该特定线程的组ID(如组ID信息520)更新每核组ID寄存器500。
在一个示例实施例中,多线程应用的主线程如同该主线程是单线程应用那样被操作系统执行。操作系统可向主线程分配组标识(ID)。当主线程生成更多线程时,操作系统可向生成的线程分配组ID(如组ID信息520)。当多线程应用的线程中的一个线程被调度来在特定核(如核310中的一个核)上执行时,每核组ID寄存器500可将待执行的线程设置为该组ID。如图5进一步所示,每核组ID寄存器500可基于线程信息510和组ID信息520产生线程组信息450-1和线程组信息450-2。
尽管图5示出了线程组接收器400的示例性功能组件,但在其它实施例中,相对于图5所示,线程组接收器400可包括更少的功能组件、不同的功能组件、以不同方式布置的功能组件或附加的功能组件。或者或另外,线程组接收器400的一个或多个功能组件可执行被描述为由线程组接收器400的一个或多个其它功能组件执行的一个或多个其它任务。
图6是存储器控制器320的空闲线程检测器410的示例性功能组件的示意图。在一个实施例中,结合图6所述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图6所示,空闲线程检测器410可包括未激活核位向量600,该未激活核位向量600可包括一个或多个位610-1、…、610-4(在本文统称为“位610”)。
未激活核位向量600可包括可接收来自线程组接收器400的线程组信息450-1和450-2、可接收存储器请求460并可接收时间段620的硬件或硬件和软件的组合。未激活核位向量600可基于线程组信息450-1和450-2将位610中的每个位关联到线程440之一及其对应的核(如核310之一)。例如,未激活核位向量600可将位610-1与单线程应用的线程关联,可将位610-2与多线程应用的第一线程关联,并可将位610-3与多线程应用的第二线程关联。未激活核位向量600可定期地在时间段620开始时设置位610中的每个位(如为特定的值)。时间段620可为可变参数并可基于利用存储器控制器320的设备200的类型和/或由设备200执行的应用的类型来设置。在一个实例中,时间段620可为足够短以迅速适应应用阶段变化,但可为足够长以防止在核(如核310中的一个核)未空闲时将其误判为空闲。在一个实施例中,时间段620可被设置为约一千(1,000)个时钟周期的值。
当存在来自在对应的核上执行的线程(如按线程组信息450-1和450-2所定义的)的存储器请求(如存储器请求460)时,未激活核位向量600可重置位610之一。例如,如图6所示,位610-1、610-2和610-4可与来自在对应的核上执行的线程的存储器请求460相关。因此,未激活核位向量600可重置位610-1、610-2和610-4。由于位610-3不与存储器请求相关,所以未激活核位向量600可不重置位610-3。如果在时间段620结束时位(如位610-3)保持被设置,则未激活核位向量600可确定在对应于位610-3的核上执行的线程在时间段620期间是空闲的,如参考数字470所指示。未激活核位向量600可输出空闲线程的指示470。
尽管图6示出了空闲线程检测器410的示例性功能组件,但在其它实施例中,相对于图6所示,空闲线程检测器410可包括不同的功能组件、以不同方式布置的功能组件或附加的功能组件。
图7是存储器控制器320的组排名器420的示例性功能组件的示意图。在一个实施例中,结合图7所述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图7所示,组排名器420可包括排名机制700。
排名机制700可包括可接收来自线程组接收器400的线程组信息450-1和450-2(未示出)并可接收来自空闲线程检测器410的空闲线程的指示470(未示出)的硬件或硬件和软件的组合。排名机制700可接收一个或多个线程组(如按线程组信息450-1和450-2所定义的)中的位610和与该一个或多个线程组相关的线程(如按线程组信息450-1和450-2所定义的)。例如,如图7所示,排名机制700可(如在时间段620结束时)接收线程组(g)720中的位610-2和610-3并可接收与线程组(g)720相关的线程730。排名机制700可基于线程组(g)720中的位610-2和610-3确定线程组(g)720的排名740-1。在一个实施例中,排名机制700可通过将位610-2和610-3(如其对应于线程组(g)720占用的空闲核)的值相加来确定线程组(g)720的排名740-1。
在一个实施例中,排名机制700可根据如下方程式来确定线程组(g)720的排名740-1:
Rank g = Σ m = 1 M IC [ Core ID m ]
其中,Rankg可对应于线程组(g)的排名,M可对应于属于线程组(g)的线程的总数,m可对应于线程组(g)使用的核,IC可对应于线程组(g)占用的空闲核的数量,且CoreIDm可对应于线程组(g)使用的第m个核的ID。因此,线程组(g)的排名可等于该线程组占用的空闲核的数量。
如果线程组的所有线程已激活(如由核310之一执行),该线程组的所有对应的位610可被重置,并且该线程组的排名可被确定为零。如果线程组的一个或多个线程空闲(如未由核310之一执行,例如空闲线程470),则该线程组的一个或多个位610可被设置(如不重置),并且该线程组的排名可被确定为大于零。例如,如图7所示,由于位610-3被设置(如指示线程组(g)包括空闲线程470),排名机制700可确定线程组(g)的排名740-1为大于零的值。排名机制700可确定其它线程组的排名740-2和740-3,并可输出排名740-1、740-2和740-3(如其可对应于线程组排名480)。如图6进一步所示,排名740-2可为零,这可指示对应线程组的所有线程已激活(如由核310之一执行)。
尽管图7示出了组排名器420的示例性功能组件,但在其它实施例中,相对于图7所示,组排名器420可包括不同的功能组件、以不同方式布置的功能组件或附加的功能组件。
图8是存储器控制器320的存储器调度器430的示例性功能组件的示意图。在一个实施例中,结合图8所述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图8所示,存储器调度器430可包括组排名规则组件800、先就绪规则组件810和先来到先服务规则组件820。
组排名规则组件800可包括可接收存储器请求460和(如来自组排名器420的)线程组排名480并可基于线程组排名480将存储器请求460优先化(如参考数字830所指示)的硬件或硬件和软件的组合。例如,组排名规则组件800可将来自具有较高线程组排名的线程组的存储器请求优先于来自具有较低线程组排名的线程组的存储器请求。
组排名规则组件800可确保(如与空闲线程组和核相关的)存储器请求被优先化。空闲线程组和核可将其空闲状态通知存储器控制器320(如通过线程组排名480),从而可向存储器控制器320指示空闲的核希望与相邻的核(如由相同线程组占用的其它核)分享存储器带宽。存储器控制器320又可尝试将相邻的核优先化。这可通过空闲时间的减少使总系统吞吐量增加。这还可通过降低可能由空闲的核消耗的静态功率和/或泄露功率来减少系统功耗。
先就绪规则组件810可包括可接收存储器请求460和与存储器请求460相关的行缓冲器信息840的硬件或硬件和软件的组合。行缓冲器信息840可指示存储器请求460中的哪些会命中(如主存储器230的)行缓冲器或未命中行缓冲器。先就绪规则组件810可基于行缓冲器信息840将存储器请求460优先化,如参考数字850所指示。例如,先就绪规则组件810可将命中行缓冲器的存储器请求优先于未命中行缓冲器的存储器请求。
先来到先服务组件820可包括可接收存储器请求460和与存储器请求460相关的时间信息860的硬件或硬件和软件的组合。时间信息860可指示存储器请求460到达(如主存储器230)的时间。先来到先服务组件820可基于时间信息860将存储器请求460优先化,如参考数字870所指示。例如,先来到先服务组件820可将在时间上更早到达(如主存储器230)的存储器请求优先于在时间上更晚到达(如主存储器230)的存储器请求。
如图8进一步所示,组优先化的存储器请求830、行缓冲器优先化的存储器请求850和/或时间优先化的存储器请求870可形成优先化的存储器请求490。在一个实施例中,存储器调度器430可首先使用组排名规则组件800、然后使用先就绪规则组件810、最后使用先来到先服务规则组件820来调度(如优先化)存储器请求460。
尽管图8示出了存储器调度器430的示例性功能组件,但在其它实施例中,相对于图8所示,存储器调度器430可包括更少的功能组件、不同的功能组件、以不同方式布置的功能组件或附加的功能组件。或者或另外,存储器调度器430的一个或多个功能组件可执行被描述为由存储器调度器430的一个或多个其它功能组件执行的一个或多个其它任务。
示例性存储器控制器操作
图9A和图9B是能够由线程组接收器400(图4)执行的示例性操作900的示意图。如图9A所示,单线程应用910(如APP_A)可包括与多核处理器(如处理单元220)的核310-1和存储体330-1(未示出)相关的两个存储器请求920-1和920-2。多线程应用(如APP_B)可包括两个线程(如APP_B1线程930和APP_B2线程950)和用于同步的障碍。线程930可与处理单元220的核310-2和存储体330-1(未示出)相关,可包括在障碍之后提供的两个存储器请求940-6和940-7,并可包括在障碍之前提供的三个存储器请求940-3、940-4和940-5。线程950可与处理单元220的核310-3和存储体330-2(未示出)相关,并可包括在障碍之后提供的两个存储器请求940-1和940-2。
多线程应用APP_B可被设计为通过使线程930访问存储体330-1且线程950访问存储体330-2来利用存储体级并行。为了解释的目的,假定由于障碍周围可能的负载不平衡(如其可能由于可能无法实现完美的运行时负载平衡而发生),线程950在线程930之前到达障碍。负载不平衡可能阻止与线程950相关的存储器请求940-1和940-2访问存储体330-2,从而可能使核310-3处于空闲状态。核310-3可能保持在空闲状态下,直到与线程930相关的存储器请求940-3、940-4和940-5被处理。因此,与线程930相关的存储器请求940-3、940-4和940-5应被赋予高于与单线程应用910相关的存储器请求920-1和920-2的优先级(如使得核310-3仅在三个周期而不是五个周期内保持空闲)。
如图9B所示,(如存储器控制器320的)线程组接收器400可接收线程910、930和950(如其对应于线程440)、线程信息510和组ID信息520。例如,线程组接收器400可接收单线程应用APP_A的线程910的组ID,并可接收多线程应用APP_B的线程930和950的另一组ID。线程组接收器400可基于线程信息510和组ID信息520产生线程910、930和950的线程组信息450-1和450-2。例如,线程组接收器400可产生线程组信息450-1(如针对单线程应用APP_A的线程910)和线程组信息450-2(如针对多线程应用APP_B的线程930和950)。
尽管图9A和图9B示出了能够由线程组接收器400执行的示例性操作,但在其它实施例中,相对于图9A和图9B所示,线程组接收器400可执行更少的操作、不同的操作或附加的操作。
图10A和图10B是能够由空闲线程检测器410(图6)执行的示例性操作1000的示意图。如图10A所示,由于障碍周围可能的负载不平衡,线程950可在线程930之前到达障碍。负载不平衡可阻止与线程950相关的存储器请求940-1和940-2访问存储体330-2(未示出),从而可能使核310-3处于空闲状态,并且可能使线程950空闲,如参考数字1010所指示。
如图10B所示,空闲线程检测器410的未激活核位向量600可包括位610-1(如针对核310-1)、位610-2(如针对核310-2)和位610-3(如针对核310-3)。位610-1可通过未激活核位向量600被重置(如为零的值),因为位610-1可与来自在对应的核(如核310-1)上执行的线程(如线程910)的存储器请求920-1和920-1相关。位610-2可通过未激活核位向量600被重置(如为零的值),因为位610-2可与来自在对应的核(如核310-2)上执行的线程(如线程930)的存储器请求940-3、940-4和940-5相关。位610-3可被设置(如为大于零的值),因为位610-3可不与来自在对应的核(如核310-3)上执行的线程的存储器请求相关。如果位610-3在时间段620结束时保持被设置,则未激活核位向量600可确定在对应于位610-3的核(如核310-3)上执行的线程(如线程950)在时间段620期间空闲,如参考数字1020所指示。未激活核位向量600可输出空闲线程的指示1020。
尽管图10A和图10B示出了能够由空闲线程检测器410执行的示例性操作,但在其它实施例中,相对于图10A和图10B所示,空闲线程检测器410可执行更少的操作、不同的操作或附加的操作。
图11是能够由组排名器420(图7)执行的示例性操作1100的示意图。如图所示,组排名器420的排名机制700可接收单线程应用APP_A的位1110和多线程应用APP_B的位1120。位1110可包括位610-1,如上文结合图10B所述,位610-1可被重置(如为零的值)。位1120可包括位610-2和位610-3,如上文结合图10B所述,位610-2可被重置(如为零的值),且位610-3可被设置(如为大于零的值)。
排名机制700可基于与位1110相关的值确定单线程应用APP_A的排名1130。如图11所示,由于位610-1被设置为零的值,单线程应用APP_A的排名1130可被确定为零。排名机制700可基于位1120确定多线程应用APP_B的排名1140。在一个实施例中,排名机制700可通过将位610-2和位610-3的值相加来确定多线程应用APP_B的排名1140。如图11所示,由于位610-2被设置为零的值且位610-3被设置为大于零的值,多线程应用APP_B的排名1140可被确定为大于零的值。
尽管图11示出了能够由组排名器420执行的示例性操作,但在其它实施例中,相对于图11所示,组排名器420可执行更少的操作、不同的操作或附加的操作。
图12A和图12B是能够由存储器调度器430(图8)执行的示例性操作1200的示意图。如图12A所示,(如单线程应用APP_A的)线程910可包括请求来自存储体330-1的存储的存储器请求920-1和920-2。(如多线程应用APP_B的)线程930可包括请求来自存储体330-1的存储的存储器请求940-3、940-4和940-5。
参照图12B,存储器调度器430的组排名规则组件800可将与线程930相关的存储器请求940-3、940-4和940-5优先于与线程910相关的存储器请求920-1和920-2,使得核310-3仅在三个周期而不是五个周期内保持空闲。如图12B所示,组排名规则组件800可接收单线程应用APP_A的排名1130和多线程应用APP_B的排名1140,并可基于排名1130和1140使多线程应用APP_B优先于单线程应用APP_A,如参考数字1210所指示。例如,参照图12A,(如线程930的)存储器请求940-3、940-4和940-5可被分别指定存储体330-1的行1、2和3,而(如线程910的)存储器请求920-1和920-2可被指定存储体330-1的行4。由于存储体330-1的行1-3在存储体330-1的行4之前出现,所以存储器请求940-3、940-4和940-5可在存储器请求920-1和920-2之前被操作。
通过使多线程应用APP_B优先于单线程应用APP_A,存储器控制器320可将多线程应用APP_B的空闲时间从五个周期(如采用FRFCFS和PAR-BS机制时就将是这样的情况)减少到三个周期。这可以改善总体的系统吞吐量,因为核310-3可更早地开始执行有用的工作。这也可以通过减少可被空闲的核310-3消耗的静态功率和/或泄露功率来降低系统功耗。
尽管图12A和图12B示出了能够由存储器调度器430执行的示例性操作,但在其它实施例中,相对于图12A和图12B所示,存储器调度器430可执行更少的操作、不同的操作或附加的操作。
图13-15是根据本文描述的实施例的用于多线程应用识别存储器调度的示例性过程1300的流程图。在一个实施例中,过程1300可由设备200(图2)执行。在另一实施例中,过程1300的部分或全部可由设备200的一个或多个组件(例如,存储器控制器320)执行。
如图13所示,过程1300可包括接收与第一组相关的多线程应用的线程(块1310)和接收与第二组相关的单线程应用的线程(块1320)。例如,在上文结合图4描述的实施例中,存储器控制器320的线程组接收器400可接收与一个或多个应用相关的一个或多个线程440,并可产生线程440的线程组信息450-1(如针对由设备200的操作系统定义的第一线程组)和线程组信息450-2(如针对由设备200的操作系统定义的第二线程组)。在一个实例中,线程组接收器400可产生单线程应用的线程的线程组信息450-1(例如,如由操作系统所定义的),并可产生多线程应用的线程的线程组信息450-2(例如,如由操作系统所定义的)。
如图13进一步所示,过程1300可包括确定第一组和第二组中的空闲线程的数量(块1330)。例如,在上文结合图4描述的实施例中,存储器控制器320的空闲线程检测器410可接收来自线程组接收器400的线程组信息450-1和450-2,并可接收与线程440相关的一个或多个存储器请求460。空闲线程检测器410可基于线程组信息450-1/450-2和存储器请求460确定线程440中的哪些线程是空闲的,并可将所确定的空闲线程提供到组排名器420,如参考数字470所指示。
返回到图13,过程1300可包括基于所确定的空闲线程的数量对第一组和第二组进行排名(块1340)。例如,在上文结合图4描述的实施例中,存储器控制器320的组排名器420可接收来自线程组接收器400的线程组信息450-1和450-2,并可接收来自空闲线程检测器410的空闲线程470。组排名器420可基于每个线程组中空闲线程470的数量对(如按线程组信息450-1和450-2所定义的)线程组中的线程进行排名。组排名器420可将线程组的排名提供到存储器调度器430,如参考数字480所指示。
如图13中进一步所示,过程1300可包括将来自具有较高排名的组的存储器请求优先于来自具有较低排名的组的存储器请求(块1350)。例如,在结合图4描述的实施例中,存储器控制器320的存储器调度器430可接收来自组排名器420的线程组排名480,并可接收与线程440相关的一个或多个存储器请求460。存储器调度器430可基于线程组排名480将存储器请求460优先化,如参考数字490所指示,并可在设备200中实现经过优先化的存储器请求490。
过程块1330和1340可包括图14中所示的过程块。如图14所示,过程块1330和1340可包括将位向量中的第一位与第一组中的线程的部分相关(块1400)、将位向量中的第二位与第一组中的线程的剩余部分相关(块1410)以及将位向量中的第三位与第二组中的线程相关(块1420)。例如,在上文结合图6描述的实施例中,存储器控制器320的未激活核位向量600可基于线程组信息450-1和450-2将位610中的每个位与线程440之一及其对应的核(如核310之一)相关。在一个实例中,未激活核位向量600可将位610-1与单线程应用的线程相关,可将位610-2与多线程应用的第一线程相关,并可将位610-3与多线程应用的第二线程相关。
如图14进一步所示,过程块1330和1340可包括在时间段开始时设置位向量中的位(块1430),以及在接收到与一个或多个位相关的线程的一个或多个存储器请求时重置位向量中的这一个或多个位(块1440)。例如,在上文结合图6所述的实施例中,未激活核位向量600可在时间段620开始时定期地设置位610中的每个位(如为特定的值)。当存在来自在对应的核上执行的(如按线程组信息450-1和450-2所定义的)线程的存储器请求(如存储器请求460)时,未激活核位向量600可重置位610中的一个位。在一个实例中,位610-1、610-2和610-4可与来自在对应的核上执行的线程的存储器请求460相关。因此,未激活核位向量600可重置位610-1、610-2和610-4。由于位610-3不与存储器请求相关,所以未激活核位向量600可不重置位610-3。
返回到图14,过程块1330和1330可包括基于在时间段结束时在位向量中保留的所设置的位确定空闲线程的数量(块1450),以及基于在时间段结束时保留的所设置的位的值对第一组和第二组进行排名(块1460)。例如,在上文结合图6和图7所述的实施例中,如果位(如位610-3)在时间段620结束时保持被设置,则未激活核位向量600可确定在对应于位610-3的核上执行的线程在时间段620期间空闲,如参考数字470所指示。未激活核位向量600可输出空闲线程的指示470。存储器控制器320的组排名规则组件800可(如从组排名器420)接收存储器请求460和线程组排名480,并可基于线程组排名480将存储器请求460优先化,如参考数字830所指示。在一个实例中,组排名规则组件800可将来自具有较高线程组排名的线程组的存储器请求优先于来自具有较低线程组排名的线程组的存储器请求。
过程块1350可包括图15中所示的过程块。如图15所示,过程块1350可包括基于与存储器请求相关的组排名确定存储器请求的第一优先级(块1500),基于先就绪规则确定存储器请求的第二优先级(块1510),以及基于先来到先服务规则确定存储器请求的第三优先级(块1520)。例如,在上文结合图8描述的实施例中,存储器控制器320的存储器调度器430可首先使用组排名规则组件800、再使用先就绪规则组件810、最后使用先来到先服务规则组件820来调度(如优先化)存储器请求460。
本文描述的系统和/或方法可使设备(如带有多核处理器的设备,例如个人计算机、膝上型计算机、平板计算机、服务器设备和/或其它类型的计算或通信设备)的存储器控制器能够识别一个或多个多线程应用并基于对多线程应用的识别调整或优化用于多线程应用的存储器调度方案。此类系统和/或方法可防止归因于不充足的存储器调度的(如设备中的)性能降级。
上文对实施例的描述提供示例和说明,但非旨在穷举或将本发明限制为所公开的精确形式。按照上文的教导,可进行各种修改和变化,或者可通过实施本发明获得各种修改和变化。
例如,虽然对于图13-图15描述了很多块,但在其它实施例中可修改这些块的顺序。此外,可以并行地执行非依赖块。在另一实例中,本文描述的多个不同的应用和线程仅为了说明目的而提供。
显然,在附图中示出的实施例中,如上文描述的各方面可以软件、固件和硬件的很多不同形式来实现。用于实现这些方面的实际的软件代码或专门的控制硬件不应被理解为具有限制性。因此,各方面的操作和行为是在没有参考特定软件代码的情况下描述的,即应理解可基于本文的描述来设计软件和控制硬件以实现这些方面。软件也可以包括用于描述电路及其布置的硬件描述语言(HDL)、Verilog、寄存器传输级(RTL)、图形数据库系统(GDS)II数据或其它软件。此类软件可存储在计算机可读介质中并用来配置制造过程,以产生能够以实施本发明的各方面的方式操作的物理电路。
此外,本文描述的某些实施例可被实现为执行一个或多个功能的“逻辑”。此逻辑可包括硬件(例如,处理器、ASIC或FPGA)或硬件和软件的组合。
尽管在权利要求书中陈述和/或在说明书中公开了特征的特定组合,但这些组合不旨在限制本发明。实际上,这些特征中的很多特征可以未专门在权利要求书中陈述和/或在说明书中公开的方式组合。
除非明确指出,否则本申请中使用的元件、块或指令不应被理解为对于本发明是关键的或必不可少的。另外,如本文所使用的,冠词(“a”)旨在包括一个或多个项目。在仅意指一个项目时,使用术语“一个”或类似语言。此外,除非明确注明,否则短语“基于”意在指“至少部分地基于”。

Claims (17)

1.一种计算设备实现的方法,其包括:
在所述计算设备接收与第一线程组相关的多线程应用的线程;
在所述计算设备接收与第二线程组相关的第二应用的线程;
通过所述计算设备并且基于接收所述多线程应用的所述线程识别所述多线程应用;以及
通过所述计算设备基于对所述多线程应用的识别调整用于所述多线程应用的存储器调度方案,
其中调整所述存储器调度方案包括:
使与所述第一线程组或所述第二线程组中排名较高的一个线程组相关的存储器请求优先于与所述第一线程组或所述第二线程组中排名较低的一个线程组相关的存储器请求,
所述第一线程组和所述第二线程组是基于所述第一线程组和所述第二线程组中的空闲线程的数量而排名的。
2.如权利要求1所述的计算设备实现的方法,其中调整所述存储器调度方案包括:
确定所述第一线程组和所述第二线程组中的空闲线程的数量;
基于所确定的所述第一线程组中的空闲线程的数量对所述第一线程组进行排名;以及
基于所确定的所述第二线程组中的空闲线程的数量对所述第二线程组进行排名。
3.如权利要求2所述的计算设备实现的方法,其中确定空闲线程的数量包括:
使位向量中的第一位与所述第一线程组中的第一线程相关;
使所述位向量中的第二位与所述第一线程组中的第二线程相关;
使所述位向量中的第三位与所述第二线程组中的线程相关;
在时间段开始时设置所述位向量中的所述第一、第二和第三位;
当接收到一个或多个线程的一个或多个存储器请求时,重置所述第一、第二或第三位中的所述一个或多个位,所述一个或多个线程与所述位向量中的所述第一、第二或第三位中的一个或多个位相关;以及
基于在所述时间段结束时在所述位向量中保留的所设置的位确定所述第一线程组和所述第二线程组中空闲线程的数量。
4.如权利要求3所述的计算设备实现的方法,其还包括:
基于在所述时间段结束时在所述位向量中保留的所设置的位对所述第一线程组和所述第二线程组进行排名。
5.如权利要求1所述的计算设备实现的方法,其中使所述存储器请求优先包括:
基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级;
基于先就绪规则确定所述存储器请求的第二优先级;以及
基于先来到先服务规则确定所述存储器请求的第三优先级。
6.一种设备的存储器控制器,所述存储器控制器包括:
处理装置,其包括:
用于接收与线程组相关的多线程应用的线程的机构;
用于接收与其它线程组相关的单线程应用的线程的机构;
用于确定所述线程组和所述其它线程组中空闲线程的数量的机构;
用于基于所确定的所述线程组中的空闲线程的数量对所述线程组进行排名的机构;
用于基于所确定的所述其它线程组中的空闲线程的数量对所述其它线程组进行排名的机构;以及
用于使与所述线程组或所述其它线程组中排名较高的一个线程组相关的存储器请求优先于与所述线程组或所述其它线程组中排名较低的一个线程组相关的存储器请求的机构。
7.如权利要求6所述的存储器控制器,其中当确定空闲线程的数量时,所述处理装置还包括:
用于使位向量中的第一位与所述线程组中的第一线程相关的机构;
用于使所述位向量中的第二位与所述线程组中的第二线程相关的机构;
用于使所述位向量中的第三位与所述其它线程组中的线程相关的机构;
用于在时间段开始时将所述位向量中的所述第一、第二和第三位设置为大于零的值的机构;
用于当接收到一个或多个线程的一个或多个存储器请求时将所述第一、第二或第三位中的所述一个或多个位重置为零的值的机构,所述一个或多个线程与所述位向量中的所述第一、第二或第三位中的一个或多个相关位;以及
用于基于在所述时间段结束时在所述位向量中保留的所设置的位的值确定所述线程组和所述其它线程组中的空闲线程的数量的机构。
8.如权利要求7所述的存储器控制器,其中所述处理装置还包括:
用于基于在所述时间段结束时在所述位向量中保留的所设置的位的值对所述线程组和所述其它线程组进行排名的机构。
9.如权利要求6所述的存储器控制器,其中当使所述存储器请求优先时,所述处理装置还包括:
用于基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级的机构;
用于基于先就绪规则确定所述存储器请求的第二优先级的机构;以及
用于基于先来到先服务规则确定所述存储器请求的第三优先级的机构。
10.一种用于存储器调度的设备,其包括:
包括每核组标识寄存器的存储器控制器,所述每核组标识寄存器用来:
接收多线程应用的线程,所述多线程应用与第一线程组相关,以及
接收与第二线程组相关的第二应用的线程,
所述存储器控制器用来:
基于接收所述多线程应用的所述线程识别所述多线程应用;以及
基于对所述多线程应用的识别调整用于所述多线程应用的存储器调度方案,
其中所述存储器控制器包括:
存储器调度器,其使所述第一线程组或所述第二线程组中排名较高的一个线程组优先于所述第一线程组或所述第二线程组中排名较低的一个线程组,
所述第一线程组和所述第二线程组是基于所述第一线程组和所述第二线程组中的空闲线程的数量而排名的。
11.如权利要求10所述的设备,其中所述存储器控制器还包括:
空闲线程检测器,其用来确定所述第一线程组和所述第二线程组中的空闲线程的数量。
12.如权利要求11所述的设备,其中所述空闲线程检测器还用来:
使位向量中的第一位与所述第一线程组中的第一线程相关;
使所述位向量中的第二位与所述第一线程组中的第二线程相关;
使所述位向量中的第三位与所述第二线程组中的线程相关;
在时间段开始时将所述位向量中的所述第一、第二和第三位设置为大于零的值;
当接收到一个或多个线程的一个或多个存储器请求时,将所述第一、第二或第三位中的所述一个或多个位重置为零的值,所述一个或多个线程与所述位向量中的所述第一、第二或第三位中的一个或多个位相关;以及
基于在所述时间段结束时在所述位向量中保留的所设置的位的值确定所述第一线程组和所述第二线程组中的空闲线程的数量。
13.如权利要求11所述的设备,其中所述存储器控制器还包括:
组排名器,其用来根据下式对组(g)进行排名:
Rank g = Σ m = 1 M I C [ CoreID m ]
其中,Rankg对应于所述组(g)的排名,M对应于属于所述组(g)的线程的总数,m对应于所述组(g)使用的核处理器,IC对应于所述组(g)占用的空闲核处理器的数量,且CoreIDm对应于所述组(g)使用的第m个核处理器的标识。
14.如权利要求11所述的设备,其中所述存储器控制器还包括:
组排名器,其用来:
基于所确定的所述第一线程组中的空闲线程的数量对所述第一线程组进行排名;以及
基于所确定的所述第二线程组中的空闲线程的数量对所述第二线程组进行排名。
15.如权利要求10所述的设备,其中所述存储器调度器用来:
使与所述第一线程组或所述第二线程组中排名较高的一个线程组相关的存储器请求优先于与所述第一线程组或所述第二线程组中排名较低的一个线程组相关的存储器请求。
16.如权利要求15所述的设备,其中所述存储器调度器还用来:
基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级;
基于先就绪规则确定所述存储器请求的第二优先级;以及
基于先来到先服务规则确定所述存储器请求的第三优先级。
17.如权利要求10所述的设备,其中所述设备包括利用多核处理器和多线程应用的计算或通信设备。
CN201180028331.0A 2010-06-08 2011-05-31 用于多核处理器的多线程应用识别存储器调度方案 Active CN102939596B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/795,871 2010-06-08
US12/795,871 US8453150B2 (en) 2010-06-08 2010-06-08 Multithread application-aware memory scheduling scheme for multi-core processors
PCT/US2011/038526 WO2011156175A1 (en) 2010-06-08 2011-05-31 Multithread application-aware memory scheduling scheme for multi-core processors

Publications (2)

Publication Number Publication Date
CN102939596A CN102939596A (zh) 2013-02-20
CN102939596B true CN102939596B (zh) 2016-03-23

Family

ID=44358387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180028331.0A Active CN102939596B (zh) 2010-06-08 2011-05-31 用于多核处理器的多线程应用识别存储器调度方案

Country Status (6)

Country Link
US (1) US8453150B2 (zh)
EP (1) EP2580669B1 (zh)
JP (1) JP5752242B2 (zh)
KR (1) KR101688983B1 (zh)
CN (1) CN102939596B (zh)
WO (1) WO2011156175A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8806502B2 (en) 2010-09-15 2014-08-12 Qualcomm Incorporated Batching resource requests in a portable computing device
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
US9652300B2 (en) * 2012-06-28 2017-05-16 Intel Corporation Systems, methods, and computer program products for preemption of threads at a synchronization barrier
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US9158595B2 (en) * 2012-10-25 2015-10-13 Nvidia Corporation Hardware scheduling of ordered critical code sections
US9135087B1 (en) * 2012-12-27 2015-09-15 Altera Corporation Workgroup handling in pipelined circuits
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
US9436503B2 (en) * 2013-10-31 2016-09-06 Emu Solutions, Inc. Concurrency control mechanisms for highly multi-threaded systems
CN104866379B (zh) * 2014-02-24 2019-06-14 中兴通讯股份有限公司 一种多核处理器调度方法、装置及终端
US9685219B2 (en) 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
KR101713114B1 (ko) 2015-08-12 2017-03-08 엔에이치엔엔터테인먼트 주식회사 모바일 환경에서의 리소스 다운로드 방법 및 시스템
US10572399B2 (en) 2016-07-13 2020-02-25 Qualcomm Incorporated Memory request arbitration
US10503541B2 (en) * 2017-12-04 2019-12-10 Beijing Panyi Technology Co., Ltd. System and method for handling dependencies in dynamic thread spawning for a multi-threading processor
US11281501B2 (en) * 2018-04-04 2022-03-22 Micron Technology, Inc. Determination of workload distribution across processors in a memory system
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
CN117472593B (zh) * 2023-12-27 2024-03-22 中诚华隆计算机技术有限公司 一种多线程间资源分配方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145113A (zh) * 2007-09-10 2008-03-19 中兴通讯股份有限公司 一种多线程访问间接寄存器的调度方法
CN101739293A (zh) * 2009-12-24 2010-06-16 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2518134B2 (ja) * 1993-03-29 1996-07-24 日本電気株式会社 共有資源排他制御方式
US7480768B2 (en) 2005-09-30 2009-01-20 Intel Corporation Apparatus, systems and methods to reduce access to shared data storage
US20070198981A1 (en) * 2006-02-17 2007-08-23 Jacobs Paul E System and method for multi-processor application support
WO2007128168A1 (en) 2006-05-10 2007-11-15 Intel Corporation Thread scheduling on multiprocessor systems
US9588810B2 (en) 2007-08-08 2017-03-07 Microsoft Technology Licensing, Llc Parallelism-aware memory request scheduling in shared memory controllers
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
JP5347451B2 (ja) * 2008-11-26 2013-11-20 富士通株式会社 マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145113A (zh) * 2007-09-10 2008-03-19 中兴通讯股份有限公司 一种多线程访问间接寄存器的调度方法
CN101739293A (zh) * 2009-12-24 2010-06-16 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法

Also Published As

Publication number Publication date
US20110302586A1 (en) 2011-12-08
WO2011156175A1 (en) 2011-12-15
JP2013528305A (ja) 2013-07-08
US8453150B2 (en) 2013-05-28
EP2580669A1 (en) 2013-04-17
KR20130116166A (ko) 2013-10-23
CN102939596A (zh) 2013-02-20
EP2580669B1 (en) 2018-07-25
JP5752242B2 (ja) 2015-07-22
KR101688983B1 (ko) 2016-12-22

Similar Documents

Publication Publication Date Title
CN102939596B (zh) 用于多核处理器的多线程应用识别存储器调度方案
CN105122211B (zh) 用于针对非对称执行单元高效调度的方法和装置
CN102473109B (zh) 利用批调度的线程调度方法及装置
CN110389816B (zh) 用于资源调度的方法、装置以及计算机可读介质
US20170286864A1 (en) Batching inputs to a machine learning model
CN102725734B (zh) 基于隔离的线程批调度方法
CN107679621A (zh) 人工神经网络处理装置
AU2016203619A1 (en) Layer-based operations scheduling to optimise memory for CNN applications
CN113837372A (zh) 神经网络的动态任务分配
CN106557367A (zh) 用于为计算资源提供粒度化服务质量的装置、方法和设备
CN102053870A (zh) 亲和性驱动的分布式调度并行计算的系统和方法
US20190163519A1 (en) Systems and methods for interrupt distribution
US9830163B2 (en) Control flow in a heterogeneous computer system
CN104160420A (zh) 在图形处理单元上执行图形和非图形应用
CN109923498B (zh) 用于电力性能管理的应用剖析
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
US11789865B2 (en) Semiconductor device
CN104094235A (zh) 多线程计算
KR20160082685A (ko) 멀티코어 프로세서들에서 동시적 함수들의 효율적인 하드웨어 배분, 및 관련 프로세서 시스템들, 방법들, 및 컴퓨터-판독가능 매체들
US10037225B2 (en) Method and system for scheduling computing
CN102484130B (zh) 存储器请求调度的应用程序选择
CN103218322B (zh) 片上系统、电子系统以及操作其的方法
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
KR102154080B1 (ko) 전력 관리 시스템, 이를 포함하는 시스템 온 칩 및 모바일 기기
KR20230059536A (ko) 프로세스 스케줄링 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant