《用于多核处理器的多线程应用识别存储器调度方案.pdf》由会员分享,可在线阅读,更多相关《用于多核处理器的多线程应用识别存储器调度方案.pdf(34页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102939596 A (43)申请公布日 2013.02.20 C N 1 0 2 9 3 9 5 9 6 A *CN102939596A* (21)申请号 201180028331.0 (22)申请日 2011.05.31 12/795,871 2010.06.08 US G06F 13/16(2006.01) G06F 9/48(2006.01) (71)申请人超威半导体公司 地址美国加利福尼亚州 (72)发明人钟在雄 (74)专利代理机构上海胜康律师事务所 31263 代理人李献忠 (54) 发明名称 用于多核处理器的多线程应用识别存储器调 度方案 (57) 。
2、摘要 一种设备可包括存储器控制器,其识别多线 程应用,并基于对所述多线程应用的识别调整用 于所述多线程应用的存储器调度方案。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.12.07 (86)PCT申请的申请数据 PCT/US2011/038526 2011.05.31 (87)PCT申请的公布数据 WO2011/156175 EN 2011.12.15 (51)Int.Cl. 权利要求书4页 说明书13页 附图16页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 4 页 说明书 13 页 附图 16 页 1/4页 2 1.一种计算设备实现的方法,其。
3、包括: 通过所述计算设备识别多线程应用;以及 通过所述计算设备基于对所述多线程应用的识别调整用于所述多线程应用的存储器 调度方案。 2.如权利要求1所述的计算设备实现的方法,其中: 所述多线程应用与第一组相关; 识别多线程应用包括接收与所述第一组相关的所述多线程应用的线程;并且 所述方法还包括: 接收与第二组相关的单线程应用的线程。 3.如权利要求2所述的计算设备实现的方法,其中调整存储器调度方案包括: 确定所述第一组和所述第二组中的空闲线程的数量; 基于所确定的所述第一组中的空闲线程的数量对所述第一组进行排名; 基于所确定的所述第二组中的空闲线程的数量对所述第二组进行排名;以及 使与所述第一。
4、组或所述第二组中排名较高的一个组相关的存储器请求优先于与所述 第一组或所述第二组中排名较低的一个组相关的存储器请求。 4.如权利要求3所述的计算设备实现的方法,其中确定空闲线程的数量包括: 使位向量中的第一位与所述第一组中的第一线程相关; 使所述位向量中的第二位与所述第一组中的第二线程相关; 使所述位向量中的第三位与所述第二组中的线程相关; 在时间段开始时设置所述位向量中的所述第一、第二和第三位; 当接收到与所述位向量中的所述第一、第二或第三位中的一个或多个位相关的一个或 多个线程的一个或多个存储器请求时,重置所述第一、第二或第三位中的所述一个或多个 位;以及 基于在所述时间段结束时在所述位向。
5、量中保留的所设置的位确定所述第一组和所述 第二组中空闲线程的数量。 5.如权利要求4所述的计算设备实现的方法,其还包括: 基于在所述时间段结束时在所述位向量中保留的所设置的位对所述第一组和所述第 二组进行排名。 6.如权利要求3所述的计算设备实现的方法,其中使存储器请求优先包括: 基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级; 基于先就绪规则确定所述存储器请求的第二优先级;以及 基于先来到先服务规则确定所述存储器请求的第三优先级。 7.一种设备的存储器控制器,所述存储器控制器包括: 处理逻辑,其用来: 接收与组相关的多线程应用的线程; 接收与其它组相关的单线程应用的线程; 。
6、确定所述组和所述其它组中空闲线程的数量; 基于所确定的所述组中的空闲线程的数量对所述组进行排名; 基于所确定的所述其它组中的空闲线程的数量对所述其它组进行排名;以及 权 利 要 求 书CN 102939596 A 2/4页 3 使与所述组或所述其它组中排名较高的一个组相关的存储器请求优先于与所述组或 所述其它组中排名较低的一个组相关的存储器请求。 8.如权利要求7所述的存储器控制器,其中当确定空闲线程的数量时,所述处理逻辑 还用来: 使位向量中的第一位与所述组中的第一线程相关; 使所述位向量中的第二位与所述组中的第二线程相关; 使所述位向量中的第三位与所述其它组中的线程相关; 在时间段开始时将。
7、所述位向量中的所述第一、第二和第三位设置为大于零的值; 当接收到与所述位向量中的所述第一、第二或第三位中的一个或多个位相关的一个或 多个线程的一个或多个存储器请求时,将所述第一、第二或第三位中的所述一个或多个位 重置为零的值;以及 基于在所述时间段结束时在所述位向量中保留的所设置的位的值确定所述组和所述 其它组中的空闲线程的所述数量。 9.如权利要求8所述的存储器控制器,其中所述处理逻辑还用来: 基于在所述时间段结束时在所述位向量中保留的所设置的位的值对所述组和所述其 它组进行排名。 10.如权利要求7所述的存储器控制器,其中当使存储器请求优先时,所述处理逻辑还 用来: 基于与所述存储器请求相。
8、关的组的排名确定所述存储器请求的第一优先级; 基于先就绪规则确定所述存储器请求的第二优先级;以及 基于先来到先服务规则确定所述存储器请求的第三优先级。 11.一种设备,其包括: 存储器控制器,其用来: 识别多线程应用;以及 基于对所述多线程应用的识别调整用于所述多线程应用的存储器调度方案。 12.如权利要求11所述的设备,其中所述存储器控制器包括: 每核组标识寄存器,其用来: 接收所述多线程应用的线程,其中所述多线程应用与第一组相关; 接收与第二组相关的单线程应用的线程。 13.如权利要求12所述的设备,其中所述存储器控制器还包括: 空闲线程检测器,其用来确定所述第一组和所述第二组中的空闲线程。
9、的数量。 14.如权利要求13所述的设备,其中所述空闲线程检测器还用来: 使位向量中的第一位与所述第一组中的第一线程相关; 使所述位向量中的第二位与所述第一组中的第二线程相关; 使所述位向量中的第三位与所述第二组中的线程相关; 在时间段开始时将所述位向量中的所述第一、第二和第三位设置为大于零的值; 当接收到与所述位向量中的所述第一、第二或第三位中的一个或多个位相关的一个或 多个线程的一个或多个存储器请求时,将所述第一、第二或第三位中的所述一个或多个位 重置为零的值;以及 权 利 要 求 书CN 102939596 A 3/4页 4 基于在所述时间段结束时在所述位向量中保留的所设置的位的值确定所。
10、述第一组和 所述第二组中的空闲线程的数量。 15.如权利要求13所述的设备,其中所述存储器控制器还包括: 组排名器,其用来根据下式对组(g)进行排名: 其中,Rank g 对应于所述组(g)的排名,M对应于属于所述组(g)的线程的总数,m对应于 所述组(g)使用的核处理器,IC对应于所述组(g)占用的空闲核处理器的数量,且CoreID m 对应于所述组(g)使用的第m个核处理器的标识。 16.如权利要求13所述的设备,其中所述存储器控制器还包括: 组排名器,其用来: 基于所确定的所述第一组中的空闲线程的数量对所述第一组进行排名;以及 基于所确定的所述第二组中的空闲线程的数量对所述第二组进行排名。
11、。 17.如权利要求16所述的设备,其中所述存储器控制器还包括: 存储器调度器,其用来使与所述第一组或所述第二组中排名较高的一个组相关的存储 器请求优先于与所述第一组或所述第二组中排名较低的一个组相关的存储器请求。 18.如权利要求17所述的设备,其中所述存储器调度器还用来: 基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级; 基于先就绪规则确定所述存储器请求的第二优先级;以及 基于先来到先服务规则确定所述存储器请求的第三优先级。 19.如权利要求11所述的设备,其中所述设备包括利用多核处理器和多线程应用的计 算或通信设备。 20.一种计算机可读存储设备,其存储一个或多个计算机。
12、可执行指令,所述计算机可读 存储设备包括: 用来从多个其它应用中识别多线程应用的一个或多个指令;以及 用来基于对所述多线程应用的识别调整用于所述多线程应用的存储器调度方案的一 个或多个指令。 21.如权利要求20所述的计算机可读存储设备,其中所述计算机可读存储设备以处理 单元的存储器控制器来提供。 22.如权利要求20所述的计算机可读存储设备,其中用来识别多线程应用的所述一个 或多个指令包括: 用来接收所述多线程应用的线程的一个或多个指令,其中所述多线程应用与第一组相 关;并且 其中所述计算机可读存储设备还包括: 用来接收与第二组相关的单线程应用的线程的一个或多个指令。 23.如权利要求22所。
13、述的计算机可读存储设备,其中用来调整存储器调度方案的所述 一个或多个指令包括: 用来确定所述第一组和所述第二组中的空闲线程的数量的一个或多个指令; 用来基于所确定的所述第一组中的空闲线程的数量对所述第一组进行排名的一个或 多个指令; 权 利 要 求 书CN 102939596 A 4/4页 5 用来基于所确定的所述第二组中的空闲线程的数量对所述第二组进行排名的一个或 多个指令;以及 用来使与所述第一组和所述第二组中排名较高的一个组相关的存储器请求优先于与 所述第一组和所述第二组中排名较低的一个组相关的存储器请求的一个或多个指令。 24.如权利要求23所述的计算机可读存储设备,其中用来确定空闲线。
14、程的数量的所述 一个或多个指令包括: 用来使位向量中的第一位与所述第一组中的第一线程相关的一个或多个指令; 用来使所述位向量中的第二位与所述第一组中的第二线程相关的一个或多个指令; 用来使所述位向量中的第三位与所述第二组中的线程相关的一个或多个指令; 用来在时间段开始时将所述位向量中的所述第一、第二和第三位设置为大于零的值的 一个或多个指令; 用来在接收到与所述位向量中的所述第一、第二或第三位中的一个或多个位相关的一 个或多个线程的一个或多个存储器请求时将所述第一、第二或第三位中的所述一个或多个 位重置为零的值的一个或多个指令;以及 用来基于在所述时间段结束时在所述位向量中保留的所设置的位确定。
15、所述第一组和 所述第二组中的空闲线程的数量的一个或多个指令。 25.如权利要求24所述的计算机可读存储设备,其中所述时间段大体上等于约1000个 时钟周期。 26.如权利要求24所述的计算机可读存储设备,其还包括: 用来基于在所述时间段结束时在所述位向量中保留的所设置的位对所述第一组和所 述第二组进行排名的一个或多个指令。 27.如权利要求23所述的计算机可读存储设备,其中用来使存储器请求优先的所述一 个或多个指令包括: 用来基于与所述存储器请求相关的组的排名确定所述存储器请求的第一优先级的一 个或多个指令; 用来在确定所述第一优先级之后基于先就绪规则确定所述存储器请求的第二优先级 的一个或多。
16、个指令;以及 用来在确定所述第二优先级之后基于先来到先服务规则确定所述存储器请求的第三 优先级的一个或多个指令。 权 利 要 求 书CN 102939596 A 1/13页 6 用于多核处理器的多线程应用识别存储器调度方案 背景技术 0001 向多/许多核(多核)处理器的转变已使多线程应用在客户端和服务器平台上都很 流行。此类应用的高线程级并行(TLP)有效地利用了多核处理器(如芯片多处理器(CMP) 系统)支持的硬件并行。存在对于加速多线程应用的执行的软件和硬件提议,例如一起执行 应用的线程的操作系统的协调线程调度。然而,没有提议解决用于多线程应用的存储器调 度(如由存储器控制器)中可使性能。
17、显著降级的性能问题。 0002 诸如先就绪先来到先服务(FRFCFS)机制和并行识别批量调度(PAR-BS)机制的一 些机制试图改善存储器控制器的性能。例如,FRFCFS机制通过调度访问存储体的行缓冲器 的存储器请求来提高存储器控制器的性能。PAR-BS机制将存储器请求分批,一批一批地执 行存储器请求,并且通过对每个批次应用最短作业优先法(SJF)调度来改善存储器控制器 的性能。然而,这两种机制只优化了用于单线程应用的存储器调度,而不能优化用于多线程 应用的存储器调度。 0003 发明的实施例的概要 0004 根据一个实施例,一种计算设备实现的方法可包括由计算设备识别多线程应用和 由计算设备基。
18、于对多线程应用的识别调整用于多线程应用的存储器调度方案。 0005 根据一个方面,多线程应用可与第一组相关;识别多线程应用可包括接收与第一 组相关的多线程应用的线程;并且该方法还可包括接收与第二组相关的单线程应用的线 程。 0006 根据另一方面,调整存储器调度方案可包括确定第一组和第二组中的空闲线程的 数量;基于确定的第一组中的空闲线程的数量对第一组进行排名;基于确定的第二组中的 空闲线程的数量对第二组进行排名;以及使与第一组和第二组中排名较高的一个组相关的 存储器请求优先于与第一组和第二组中排名较低的一个组相关的存储器请求。 0007 根据另一个实施例,设备的存储器控制器可包括用来接收与组。
19、相关的多线程应用 的线程以及接收与其它组相关的单线程应用的线程的处理逻辑。该处理逻辑还可确定所述 组和所述其它组中空闲线程的数量;基于确定的所述组中的空闲线程的数量对所述组进行 排名;以及基于确定的所述其它组中的空闲线程的数量对所述其它组进行排名。处理逻辑 还可使与所述组和所述其它组中排名较高的一个组相关的存储器请求优先于与所述组和 所述其它组中排名较低的一个组相关的存储器请求。 0008 根据又一个实施例,设备可包括用来识别多线程应用并基于对多线程应用的识别 调整用于多线程应用的存储器调度方案的存储器控制器。 0009 根据又一个实施例,一种计算机可读存储设备可存储一个或多个计算机可执行指 。
20、令,并且可包括用来从一组其它应用中识别多线程应用的一个或多个指令以及用来基于对 多线程应用的识别调整用于多线程应用的存储器调度方案的一个或多个指令。 0010 附图简述 0011 并入本说明书中并构成本说明书的一部分的附图示出了本文描述的一个或多个 实施例,并且与其它描述一起对这些实施例进行了解释。其中: 说 明 书CN 102939596 A 2/13页 7 0012 图1是经历性能降级的示例性存储器调度布置的示意图; 0013 图2是可根据本文描述的实施例的可执行多线程应用识别存储器调度方案的设 备的示例性组件的示意图; 0014 图3是图2中描述的设备的处理单元和主存储器的示例性组件的示。
21、意图; 0015 图4是图3中描述的处理单元的存储器控制器的示例性功能组件的示意图; 0016 图5是图4中描述的存储器控制器的线程组接收器的示例性功能组件的示意图; 0017 图6是图4中描述的存储器控制器的空闲线程检测器的示例性功能组件的示意 图; 0018 图7是图4中描述的存储器控制器的组排名器的示例性功能组件的示意图; 0019 图8是图4中描述的存储器控制器的存储器调度器的示例性功能组件的示意图; 0020 图9A和图9B是能够由图5中描述的线程组接收器执行的示例性操作的示意图; 0021 图10A和图10B是能够由图6中描述的空闲线程检测器执行的示例性操作的示意 图; 0022 。
22、图11是能够由图7中描述的组排名器执行的示例性操作的示意图; 0023 图12A和图12B是能够由图8中描述的存储器调度器执行的示例性操作的示意 图; 0024 图13-图15是根据本文描述的实施例的用于多线程应用识别存储器调度的示例 性过程的流程图。 具体实施方式 0025 以下详细描述参考附图。不同附图中的相同参考数字可标识相同或相似的元件。 此外,以下详细描述不限制本发明。 0026 概述 0027 本文描述的系统和/或方法可使设备(如带有多核处理器的设备,例如个人计算 机、膝上型计算机、平板计算机、服务器设备、手持或移动设备和/或其它类型的计算或通 信设备)的存储器控制器能够识别一个或。
23、多个多线程应用,并基于对多线程应用的识别调 整或优化用于多线程应用的存储器调度方案。此类系统和/或方法可防止归因于不充足 的存储器调度的(如设备中的)性能降级。在一个实施例中,存储器控制器可接收与第一组 相关的多线程应用的线程,并可接收与第二组相关的单线程应用的线程。存储器控制器可 确定第一和第二组中的空闲线程的数量,可基于空闲线程的数量对第一组和第二组进行排 名,并可使来自具有较高排名的组的存储器请求优先于来自具有较低排名的组的存储器请 求。 0028 如本文所使用的,术语“线程”旨在被宽泛地解释为包括允许应用执行顺序的动作 或一次执行许多动作的计算机程序(或应用)的部分(如任务)。应用中的。
24、每个线程可识别在 被应用指示时执行的进程。 0029 如本文所使用的,术语“组件”和“设备”旨在被宽泛地理解为包括硬件(如处理器、 微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、芯片、存储设备(如只读存储 器(ROM)、随机存取存储器(RAM)等)等)或硬件和软件的组合(如执行存储设备中包含的软 件的处理器、微处理器、ASIC等)。 说 明 书CN 102939596 A 3/13页 8 0030 示例性存储器调度布置 0031 图1是经历性能降级的示例性存储器调度布置100的示意图。如图所示,单线程应 用(如APP_A)可包括与多核处理器的第一存储体(如BANK1)和第一。
25、核(如CORE_1)相关的两 个存储器请求。多线程应用(如APP_B)可包括两个线程(如线程APP_B1和APP_B2)和用于 同步的障碍。在一个实例中,用于同步的障碍可指示多核处理器对在障碍之前和之后提供 的存储器请求实施排序约束。线程APP_B1可与多核处理器的第二核(如CORE_2)相关,可包 括在障碍之后提供的两个存储器请求,并可包括在障碍之前提供的且与第一存储体BANK1 相关的三个存储器请求。线程APP_B2可与多核处理器的第三核(如CORE_3)相关,并可包 括在障碍之后提供的两个存储器请求。 0032 多线程应用APP_B可被设计为通过使线程APP_B1访问第一存储体BANK1。
26、且使线 程APP_B2访问第二存储体BANK2来利用存储体级并行。由于在障碍周围可能的负载不平 衡(如由于实现完美的运行时负载平衡可能很难而可能发生这种情况),线程APP_B2可在线 程APP_B1之前到达障碍。负载不平衡可阻止与线程APP_B2相关的存储器请求访问第二存 储体BANK2,从而可导致第三核CORE_3处于空闲状态。第三核CORE_3可保持在空闲状态, 直到与线程APP_B1相关的(如在障碍之下提供的)三个存储器请求被处理。因此,与线程 APP_B1相关的(如在障碍之下提供的)三个存储器请求应被赋予高于与单线程应用APP_A 相关的存储器请求的优先级(如使得第三核CORE_3保持。
27、空闲达三个周期)。 0033 然而,当前存储器调度方案不识别多线程应用且试图调度存储器请求以加速语义 地阻止多线程应用的其它线程取得进展的同一多线程应用的线程。例如,由于障碍,线程 APP_B1可阻止线程APP_B2取得进展。如果在布置100中采用FRFCFS存储器调度方案,则 由于单线程应用APP_A具有高于线程APP_B1的行缓冲器命中率,FRFCFS方案可使性能降 级。在FRFCFS方案中,命中行缓冲器的存储器请求可被优先化。因此,单线程应用APP_A的 存储器请求可优先于线程APP_B1的存储器请求,因为单线程应用APP_A的存储器请求与第 一存储体BANK1的相同行(如行1)相关,而。
28、线程APP_B1的存储器请求与第一存储体BANK1 的不同行(如行2-4)相关。这可将第三核CORE_3的空闲时间从三个周期增加到五个周期, 并可阻止第三核CORE_3在障碍之后执行多线程应用APP_B。 0034 如果布置100中采用PAR-BS存储器调度方案,则根据最短作业优先法(SJF)策 略,PAR-BS方案可将具有最少数量的存储器请求的线程的存储器请求在存储器请求队列中 优先化。因此,单线程应用APP_A的存储器请求可优先于线程APP_B1的存储器请求,因为 单线程应用APP_A的存储器请求的数量为二,而线程APP_B1的存储器请求的数量为三。这 可将第三核CORE_3的空闲时间从三。
29、个周期增加到五个周期,并可阻止第三核CORE_3在障 碍之后执行多线程应用APP_B。FRFCFS和PAR-BS存储器调度方案以及其它存储器调度方 案不识别多线程应用,使性能降级,并使操作系统对协调线程调度的努力徒劳。 0035 相反,本文描述的系统和/或方法可使设备的存储器控制器能够识别一个或多个 多线程应用,并基于对多线程应用的识别优化用于多线程应用的存储器调度方案。例如,本 文描述的系统和/或方法可将可使一组线程而不是仅单个线程受益的存储器请求优先化 (如服务于线程APP_B1的请求以使线程APP_B1和线程APP_B2都受益)。 0036 示例性设备配置 0037 图2是根据本文描述的。
30、实施例的可执行多线程应用识别存储器调度方案的设备 说 明 书CN 102939596 A 4/13页 9 200的示例性组件的示意图。设备200可包括利用多核处理器和/或多线程应用的任何计 算或通信设备。例如,设备200可包括个人计算机、台式计算机、膝上型计算机、平板计算 机、服务器设备、无线电话、个人通信系统(PCS)终端、个人数字助理(PDA)、蜂窝电话、智能 电话和/或其它类型的计算或通信设备。 0038 如图2所示,设备200可包括总线210、处理单元220、主存储器230、ROM240、存储 设备250、输入设备260、输出设备270和/或通信接口280。总线210可包括允许设备20。
31、0 的组件之间通信的路径。 0039 处理单元220可包括一个或多个处理器(如多核处理器)、微处理器或可解释并执 行指令的其它类型的处理单元。在一个实施例中,处理单元220可包括其包括多个核的单 个处理器。主存储器230可包括RAM、动态RAM(DRAM)和/或可存储供处理单元220执行的 信息和指令的另一类型的动态存储设备。ROM240可包括ROM设备或可存储供处理单元220 使用的静态信息和/或指令的另一类型的静态存储设备。存储设备250可包括磁和/或光 学记录介质及其对应的驱动器。 0040 输入设备260可包括允许操作者向设备200输入信息的机制,例如键盘、鼠标、笔、 麦克风、语音识别。
32、和/或生物特征机制、触摸屏等。输出设备270可包括向操作者输出信息 的机制,包括显示器、打印机、扬声器等。通信接口280可包括使设备200能够与其它设备 和/或系统通信的任何收发器类的机制。例如,通信接口280可包括用于通过网络与另一 设备或系统通信的机制。 0041 如本文所述,设备200可响应于处理单元220执行包含在计算机可读介质(例如主 存储器230)中的软件指令而执行某些操作。计算机可读介质可被定义为物理或逻辑存储设 备。逻辑存储设备可包括单个物理存储设备内或分布在多个物理存储设备间的存储空间。 软件指令可从另一计算机可读介质(例如存储设备250)或通过通信接口280从另一设备读 入。
33、到主存储器230中。包含在主存储器230中的软件指令可使处理单元220执行本文描述 的过程。或者,硬连线电路可代替或结合软件指令用来实现本文描述的过程。因此,本文描 述的实施例不限于硬件电路和软件的任何特定组合。 0042 尽管图2示出了设备200的示例性组件,但在其它实施例中,相对于图2所示,设 备200可包括更少的组件、不同的组件、以不同方式布置的组件或附加的组件。或者或另 外,设备200的一个或多个组件可执行被描述为由设备200的一个或多个其它组件执行的 一个或多个其它任务。 0043 图3是设备200的处理单元220和主存储器230的示例性组件的示意图。在一个 实施例中,图3所示的组件。
34、可形成存储器调度布置300。如图所示,处理单元220可包括多 个核310-1、310-2、310-3等(在本文统称为“核310”)和存储器控制器320。主存储器230 可包括多个存储器存储体330-1、330-2等(在本文统称为“存储体330”)。 0044 核310可集成到单个集成电路管芯(如芯片多处理器(CMP))上或可集成到单个芯 片封装中的多个管芯上。核310中的每个核可包括处理器、微处理器或可解释并执行指令 的另一类型的处理单元。 0045 存储器控制器320可包括一个或多个处理器、微处理器、ASIC、FPGA或可解释并执 行(如包含在存储器控制器320的计算机可读介质中的)指令的其。
35、它类型的处理逻辑,以便 执行本文描述的操作。在一个实施例中,存储器控制器320可包括管理去往或来自主存储 说 明 书CN 102939596 A 5/13页 10 器230的数据流的数字电路。存储器控制器320可为单独的芯片,或可集成到另一芯片中, 例如在处理单元220的管芯上。存储器控制器320可包括逻辑,其用来从主存储器230读 取和向其写入以及通过发送经过主存储器230的电流来刷新主存储器230。可通过使用多 路复用器和多路分用器来促进从主存储器230读取和向其写入。存储器控制器320可选择 主存储器230的正确的行和列地址,作为向多路复用器的输入。多路分用器可选择主存储 器230的正确。
36、的存储器位置,并可返回与该存储器位置相关的数据。在另一实施例中,存储 器控制器320可为处理单元220的功能组件。 0046 存储体330中的每个可包括存储在主存储器230中的数据的个别部分。在一个实 例中,存储体330中的每个可包含临时存储的数据并用作存储器缓存。存储体330可连续 地排序,从而可提供对存储在主存储器230中的个别项目的容易访问。存储体330中的每 个可包括可被设计为独立处理信息传输的主存储器230的物理部分。 0047 如图3中进一步所示,存储器控制器320可提供用于单线程应用(APP_A)340和包 括两个线程(如线程(APP_B1)350-1和线程(APP_B2)350。
37、-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。 0048 然而,与传统的存储器调度方案(如上文参照图1所述的)不同,存储器控制器320 可提供成本有效的存储器调度方案,其在多线程应用(如多线程应用350)包括空闲线程时 将多线程应用的线程(如线程350-1和350-2)优先化。为了解释的目的,假定多线程应用 350包。
38、括空闲线程(如线程350-2可以是空闲的)。线程可出于几种原因而空闲。例如,如上 文参照图1所述,在障碍处的负载不平衡可使在较早的时间到达障碍的线程空闲。在另一 实例中,被锁定保护的关键部分可只允许多线程应用的一个线程进入,而等待进入该关键 部分的(如多线程应用的)其它线程变得空闲。在又一个实例中,多线程应用的在算法上顺 序的区域可由多线程应用的单个线程执行,从而可使多线程应用的其它线程空闲。通过使 具有空闲线程的多线程应用的线程优先化,存储器控制器320可帮助空闲线程迅速结束无 效率的执行阶段并使多线程应用返回到所有线程被并行地完全执行的执行阶段。 0049 在一个实施例中,存储器控制器32。
39、0可接收(如与通过操作系统与第一组相关的) 多线程应用350的线程350-1和350-2,并可接收(如通过操作系统与第二组相关的)单线 程应用340的线程。存储器控制器320可确定第一和第二组中空闲线程(如线程350-2)的 数量,并基于该空闲线程的数量对第一组和第二组进行排名。例如,由于第一组可能包括空 闲线程(如线程350-2)而第二组可能不包括空闲线程,所以存储器控制器320可使第一组 的排名高于第二组。存储器控制器320可使来自具有较高排名的组的存储器请求优先于来 自具有较低排名的组的存储器请求。例如,存储器控制器320可使来自第一组(如来自线程 350-2)的存储器请求优先于来自第二。
40、组(如来自单线程应用340)的存储器请求。 0050 尽管图3示出了处理单元220和主存储器230的示例性组件,但在其它实施例中, 相对于图3所示,处理单元220和/或主存储器230可包括更少的组件、不同的组件、以不 同方式布置的组件或附加的组件。或者或另外,处理单元220和/或主存储器230的一个 或多个组件可执行被描述为由处理单元220和/或主存储器230的一个或多个其它组件执 说 明 书CN 102939596 A 10 6/13页 11 行的一个或多个其它任务。 0051 示例性存储器控制器配置 0052 图4是存储器控制器320的示例性功能组件的示意图。在一个实施例中,结合图4 所描。
41、述的功能组件可由包括在存储器控制器320中的一个或多个处理器、微处理器、ASIC、 FPGA或其它类型的处理逻辑来实现。如图4所示,存储器控制器320可包括线程组接收器 400、空闲线程检测器410、组排名器420和存储器调度器430。 0053 线程组接收器400可包括可接收与一个或多个应用相关的一个或多个线程440并 可产生线程440的线程组信息450-1(如针对由设备200的操作系统定义的第一线程组)和 线程组信息450-2(如针对由设备200的操作系统定义的第二线程组)的硬件或硬件和软 件的组合。例如,线程组接收器400可产生单线程应用的线程的线程组信息450-1并可产 生多线程应用的。
42、线程的线程组信息450-2。如图4所示,线程组接收器400可将线程组信 息450-1(如针对第一定义的线程组)和线程组信息450-2(如针对第二定义的线程组)提 供到空闲线程检测器410和组排名器420。下文将结合例如图5提供线程组接收器400更 多详细信息。 0054 空闲线程检测器410可包括可接收来自线程组接收器400的线程组信息450-1和 450-2并可接收与线程440相关的一个或多个存储器请求460的硬件或硬件和软件的组合。 空闲线程检测器410可基于线程组信息450-1/450-2和存储器请求460确定线程440中 的哪些线程是空闲的,并可将所确定的空闲线程提供到组排名器420,。
43、如参考数字470所指 示。下文将结合例如图6提供空闲线程检测器410的更多详细信息。 0055 组排名器420可包括可接收来自线程组接收器400的线程组信息450-1和450-2 并可接收来自空闲线程检测器410的空闲线程470的硬件或硬件和软件的组合。组排名器 420可基于每个线程组中的空闲线程470的数量对(如由线程组信息450-1和450-2所定义 的)线程组中的线程进行排名。组排名器420可将线程组的排名提供到存储器调度器430, 如参考数字480所指示。下文将结合例如图7提供组排名器420的更多详细信息。 0056 存储器调度器430可包括可接收来自组排名器420的线程组排名480并。
44、可接收与 线程440相关的一个或多个存储器请求460的硬件或硬件和软件的组合。存储器调度器 430可基于线程组排名480将存储器请求460优先化,如参考数字490所指示,并可在设备 200中实现经过优先化的存储器请求490。下文将结合例如图8提供存储器调度器430的 更多详细信息。 0057 尽管图4示出了存储器控制器320的示例性功能组件,但在其它实施例中,相对于 图4中所示,存储器控制器320可包括更少的功能组件、不同的功能组件、以不同方式布置 的功能组件或附加的功能组件。或者或另外,存储器控制器320的一个或多个功能组件可 执行被描述为由存储器控制器320的一个或多个其它功能组件执行的一。
45、个或多个其它任 务。 0058 图5是存储器控制器320的线程组接收器400的示例性功能组件的示意图。在一 个实施例中,结合图5所述的功能组件可由包括在存储器控制器320中的一个或多个处理 器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图5所示,线程组接收器400 可包括每核组标识(ID)寄存器500。 0059 每核组ID寄存器500可包括可接收例如来自设备200的操作系统的线程信息510 说 明 书CN 102939596 A 11 7/13页 12 和组ID信息520的硬件或硬件和软件的组合。在一个实例中,当一起执行同一应用的线程 时,操作系统可产生线程信息510(如用于。
46、协调线程调度)。组ID信息520可包括在每个核 (如核310中的每个核)上被执行的线程的组ID。当操作系统在核(如核310中的一个核) 上调度特定线程时,操作系统可用该特定线程的组ID(如组ID信息520)更新每核组ID寄 存器500。 0060 在一个示例实施例中,多线程应用的主线程如同该主线程是单线程应用那样被操 作系统执行。操作系统可向主线程分配组标识(ID)。当主线程生成更多线程时,操作系统 可向生成的线程分配组ID(如组ID信息520)。当多线程应用的线程中的一个线程被调度 来在特定核(如核310中的一个核)上执行时,每核组ID寄存器500可将待执行的线程设 置为该组ID。如图5进一。
47、步所示,每核组ID寄存器500可基于线程信息510和组ID信息 520产生线程组信息450-1和线程组信息450-2。 0061 尽管图5示出了线程组接收器400的示例性功能组件,但在其它实施例中,相对于 图5所示,线程组接收器400可包括更少的功能组件、不同的功能组件、以不同方式布置的 功能组件或附加的功能组件。或者或另外,线程组接收器400的一个或多个功能组件可执 行被描述为由线程组接收器400的一个或多个其它功能组件执行的一个或多个其它任务。 0062 图6是存储器控制器320的空闲线程检测器410的示例性功能组件的示意图。在 一个实施例中,结合图6所述的功能组件可由包括在存储器控制器3。
48、20中的一个或多个处 理器、微处理器、ASIC、FPGA或其它类型的处理逻辑来实现。如图6所示,空闲线程检测器 410可包括未激活核位向量600,该未激活核位向量600可包括一个或多个位610-1、 610-4(在本文统称为“位610”)。 0063 未激活核位向量600可包括可接收来自线程组接收器400的线程组信息450-1和 450-2、可接收存储器请求460并可接收时间段620的硬件或硬件和软件的组合。未激活核 位向量600可基于线程组信息450-1和450-2将位610中的每个位关联到线程440之一及 其对应的核(如核310之一)。例如,未激活核位向量600可将位610-1与单线程应用。
49、的线 程关联,可将位610-2与多线程应用的第一线程关联,并可将位610-3与多线程应用的第二 线程关联。未激活核位向量600可定期地在时间段620开始时设置位610中的每个位(如 为特定的值)。时间段620可为可变参数并可基于利用存储器控制器320的设备200的类 型和/或由设备200执行的应用的类型来设置。在一个实例中,时间段620可为足够短以 迅速适应应用阶段变化,但可为足够长以防止在核(如核310中的一个核)未空闲时将其误 判为空闲。在一个实施例中,时间段620可被设置为约一千(1,000)个时钟周期的值。 0064 当存在来自在对应的核上执行的线程(如按线程组信息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可不。