CN106874106A - 一种主存bank划分方法及装置 - Google Patents
一种主存bank划分方法及装置 Download PDFInfo
- Publication number
- CN106874106A CN106874106A CN201611206795.7A CN201611206795A CN106874106A CN 106874106 A CN106874106 A CN 106874106A CN 201611206795 A CN201611206795 A CN 201611206795A CN 106874106 A CN106874106 A CN 106874106A
- Authority
- CN
- China
- Prior art keywords
- application
- memory access
- bank
- applications
- row
- 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.)
- Withdrawn
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
一种主存bank划分方法及装置,包括:周期性地统计各个应用运行时的访存特征,根据各个应用的访存特征将应用分类,根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据主存bank划分策略为每种类型的每个应用分配相应数量的bank。与现有技术相比,本发明提供的主存bank划分的技术方案,根据应用的访存密集度和行局部性动态调整bank划分策略,从而满足了各应用对bank数量的需求,增加了应用bank级别的并行性,提升了主存访问效率。
Description
技术领域
本发明涉及现代微处理器主存控制器的设计领域,具体涉及一种主存bank划分方法及装置。
背景技术
现代DRAM(Dynamic Random Access Memory动态随机存取存储器)主存系统的组织结构中,主存系统通常包含一个或者多个通道channel,对不同channel的访存请求能并行处理。一个channel包含一个或者多个rank,多个rank共享地址、数据和命令总线。一个rank又包含多个bank(如DDR3,每个rank通常包含8个bank)。每个bank又有一个独立的行缓冲,用来缓存DRAM主存一行的数据。如果访存请求命令中行缓冲中缓存的DRAM主存行,主存控制器只需要发起列访问操作读/写数据;否则,发生行冲突,主存控制器要发起三个操作命令,分别为预充电操作(预充电打开的行)、行激活操作(激活新的一行)和列访问操作来完成行冲突的访存请求。开发主存的行局部性能可以大大提升主存访问的效率,DRAM主存多bank的结构,使得对不同bank的访存请求能够并行执行(受共享地址/数据/命令总线的限制)。开发bank级别的并行性能隐藏访存延时,提升主存访问的性能,对于行局部性低的访存密集型应用,增加bank级别的并行性能可以大幅提升访存性能。
存储墙问题的普遍存在以及片上多核处理器系统(chip multiprocessor,CMP)的广泛普及使得主存成为多核系统的主要共享资源。主存性能逐渐成为制约系统性能的关键因素,也是计算机系统结构设计者关心的主要问题之一。CMP系统中多核共享主存系统,多个应用同时运行同时访问主存,竞争有限的主存资源。多个应用同时访问主存,各应用的访存请求相互交错、相互干扰,破坏单个应用访存序列原有的空间局部性(行局部性),引发额外的行冲突、以及共享资源如地址/数据总线等的冲突,从而大幅降低系统性能。另外,多个应用访存请求之间相互影响,会降低单个应用原有的bank级别的并行性,影响主存访问的性能。
为了解决上述问题,现有的主存调度策略通过对访存请求进行重新排序提升系统的吞吐率和公平性。主存调度策略能在一定程度上恢复应用原有的空间局部性,但其恢复能力有限,不能从根本上解决各应用访存请求之间相互干扰的问题。首先,这些调度策略的首要设计目标不是恢复空间局部性;其次,恢复空间局部性的能力受到调度缓存尺寸大小的限制;另外,同一应用发出的相邻访存请求存在时间间隔(通常间隔较大),影响调度能力。随着片上多核处理器系统核数量的增加,多核对有限主存资源竞争加剧,各应用访存交易之间的相互干扰也加剧。
此为,现有的主存划分方法通过为应用划分主存资源降低各应用访存交易之间的相互影响。Channel划分方法将计算密集型应用的访存请求和访存密集型应用的访存请求映射到不同的channel,降低不同类型应用访存请求间的相互干扰;这种划分方法同时能保证计算密集型应用的访存请求能够快速响应。Channel划分方法能提升系统的吞吐率,但是由于在计算密集型应用与访存密集型应用之间划分channel资源,造成主存资源划分不均,加剧访存密集型应用对主存资源的竞争以及其访存交易之间的相互干扰,导致访存密集型应用的访存延时增大,同时系统的不公平性也增大。
此为,现有的Bank划分方法使用操作系统的页着色方法,基于页着色的bank划分方法在进行物理地址到DRAM主存地址映射时,将物理地址与DRAM主存rank和bank地址域重合的位标示为颜色位(Colors),如图1所示。操作系统在进行页分配时,将不同的颜色分配给不同的处理器核,为不同的应用分配不同的主存bank资源来隔离各个应用的访存请求,从而消除各应用访存请求间的相互干扰。Bank划分方法从根本上消除了各应用访存请求之间的相互干扰,提高了主存访问性能,从而提升系统性能。但是,现有的bank划分方法为每个处理器核分配数量相等的bank,而不考虑应用的访存序列对bank级别并行性的需求。在某些情况下,等份bank划分方法限制单个应用的bank数量,降低单个应用的bank级别并行性,因此会大幅降低系统性能。
发明内容
本发明需要解决的技术问题是提供一种主存bank划分方法及装置,满足各应用对bank数量的需求,增加应用bank级别的并行性,提升主存访问效率。
为了解决上述技术问题,本发明提供了一种主存bank划分方法,包括:
周期性地统计各个应用运行时的访存特征;
根据各个应用的访存特征将所述应用分类;
根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank。
可选地,所述主存bank划分方法还包括:
所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;所述访存密集度指每个周期内该应用的访存次数;所述行局部性指每个周期内该应用的行命中率;
所述周期性地统计各个应用运行时的访存特征包括:周期性地统计并更新每个应用的访存次数和行命中率。
可选地,所述周期性地统计并更新每个应用的访存次数和行命中率,包括:
对于每个应用,在每个中bank设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中交易的个数进行计数;同时为每个应用设置一个访存次数计数器记录所述应用在一个周期内的访存次数;使用所述应用一个周期内行命中交易的个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
可选地,所述根据各个应用的访存特征将所述应用分类,包括:
设置访存次数阈值,将一个周期内的访存次数小于所述访存次数阈值的应用分为计算密集型应用,将一个周期内的访存次数大于或等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于或等于所述行命中率阈值的应用分为行局部性高的应用。
可选地,所述根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank,包括:
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
可选地,所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器动态随机存取存储器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。
本发明还提供一种主存bank划分装置,包括:
统计模块,用于周期性地统计各个应用运行时的访存特征;
分类模块,用于根据各个应用的访存特征将所述应用分类;
bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank。
可选地,所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;所述访存密集度指每个周期内该应用的访存次数;所述行局部性指每个周期内该应用的行命中率;
所述统计模块,用于周期性地统计各个应用运行时的访存特征包括:周期性地统计并更新每个应用的访存次数和行命中率。
可选地,所述统计模块,用于周期性地统计并更新每个应用的访存次数和行命中率,包括:
对于每个应用,在每个bank中设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中交易的个数进行计数;同时为每个应用设置一个访存次数计数器记录所述应用在一个周期内的访存次数;使用所述应用一个周期内行命中交易的个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
可选地,所述分类模块,用于根据各个应用的访存特征将所述应用分类,包括:
设置访存次数阈值,将一个周期内的访存次数小于所述访存次数阈值的应用分为计算密集型应用,将一个周期内的访存次数大于或等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于或等于所述行命中率阈值的应用分为行局部性高的应用。
可选地,所述bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank,包括:当划分为计算和访存密集型,及行局部性高/低时,
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
可选地,所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器动态随机存取存储器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。
与现有技术相比,本发明提供的主存bank划分方法及装置,根据应用的访存密集度和行局部性动态调整bank划分策略,从而满足各应用对bank数量的需求,增加应用bank级别的并行性,提升主存访问效率。
附图说明
图1是现有技术中页着色示意图;
图2是实施例中基于页着色的主存bank划分方法流程图;
图3是实施例中根据各个应用的访存特征将应用进行分类的示意图;
图4是实施例中应用中既有访存不密集型应用(计算密集型应用),又有访存密集型应用,bank划分方法示意图;
图5是实施例中基于页着色的主存bank划分装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例:
如图2所示,本实施例提供了一种基于页着色的主存bank划分方法,包括:
S101:周期性地统计各个应用运行时的访存特征;
其中,所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;访存密集度是指应用发出访存请求或者末级cache失效的频率,由于各处理器核执行的指令条数在主存控制器端通常是不可知的,因此使用每个周期内应用的的访存次数(MemoryAccesses Per Interval,MAPI)来衡量应用的访存密集度;行局部性则用每个周期内应用的行命中率(Row Buffer Hit Rate,RBH)表示。
周期性地统计各个应用运行时的访存特征具体包括:周期性地统计并更新每个应用的访存次数和行命中率,作为一种优选的方式,通过在主存控制器中增加硬件计数器记录各应用的访存密集度和行局部性。
具体在一个应用示例中:
对于每个应用,为每个应用设置一个访存次数计数器记录一个周期内所述应用的访存次数;
对于每个应用,在每个bank中设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中的交易个数进行计数;并使用所述应用一个周期内行命中的交易个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
“行命中交易”是针对每一个bank独立统计的,即:如果一个应用本次访问该bank和上次访问该bank时的行地址相同,则记为一个行命中交易。在每个bank中设置一个与该应用对应的行地址寄存器,例如,一个处理器有8核,那么每个bank设置8个寄存器分别对应一个应用,各寄存器和应用的ID一一对应,各寄存器各自记录其对应的应用前一次访存的行地址。行地址的对比是指与同一应用寄存器记录的行地址进行对比。
下一周期开始时对访存次数计数器和行地址寄存器清零,重新开始统计该周期内的访存次数和命中。
通过周期性的统计和更新各个应用的访存特征,可以根据每个应用最新的访存特征选择相应的划分策略为每个应用分配下一周期相应数量的bank,即动态调整bank划分策略。
S102:根据各个应用的访存特征将所述应用分类;
其中,作为一种优选的方式,如图3所示,可以按照以下方式对应用进行分类:
设置访存次数阈值MAPIt,将一个周期内的访存次数小于所述访存次数阈值的应用分为访存不密集型应用(即,计算密集型应用),将一个周期内的访存次数大于等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值RBHt,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于等于所述行命中率阈值的应用分为行局部性高的应用。
S103:根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述划分策略为每种类型的每个应用分配相应数量的bank。
其中,作为一种优选的方式,当划分为计算和访存密集型,及行局部性高/低时,步骤S103具体包括:
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
其中,所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。本实施例适用于一个处理器核只跑一个应用的情况,因此,给应用分配bank其实也就是给处理器核分配bank。
在进行动态划分时,分三种情况讨论。第一种,当MI=0时,所有应用均为计算密集型应用(即,访存不密集型应用),这种情况下,动态主存bank划分方法为各应用均衡划分bank资源。因为增加bank数量对访存不密集应用的性能几乎没有提升。第二种,当0<MI<1时,应用中既有访存不密集的应用,又有访存密集型应用,bank划分方法如图4所示。首先,为了节省给访存密集型的应用节省主存bank资源,对于计算密集型应用不分配专门的bank,这些计算密集型应用可以访问主存的所有bank;因为这些计算密集型应用只发出少量的访存请求,对其他应用产生干扰的能力低。其次,对于行局部性高的访存密集型应用(H-RBL应用),为了保持应用的行局部性,为每个应用分配MPU个bank,如图4所示,给应用2分配BG0(Bank Group,bank组),给应用3分配BG1,每个BG包含MPU个bank;对于行局部性低的访存密集型应用(L-RBL应用),为了提高bank级别的并行性,每两个应用共享2×MPU个bank(在行局部性和bank级别并行性之间做权衡),如图4所示,给应用4和5分配BG2,BG2包含2×MPU个bank;因为这些应用的行局部性低,保留原有的行局部性带来的益处小,而两个应用共享bank能大幅增加bank级别的并行性,提升主存系统的性能。第三种,当MI=100%时,所有应用均为访存密集型应用,对于行局部性高的访存密集型应用,为每个应用分配MPU个bank来保持应用原有的行局部性,提升访存性能;而对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank,提升bank级别的并行性,提升访存性能。现代处理器系统一般有多个channel,ch0指channel0,ch1指channel1。
如图5所示,本实施例提供了一种主存bank划分装置,包括:
统计模块,用于周期性地统计各个应用运行时的访存特征;
分类模块,用于根据各个应用的访存特征将所述应用分类;
bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述划分策略为每种类型的每个应用分配相应数量的bank。
其中,所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;所述访存密集度指每个周期内该应用的访存次数;所述行局部性指每个周期内该应用的行命中率;
所述统计模块,用于周期性地统计各个应用运行时的访存特征包括:周期性地统计并更新每个应用的访存次数和行命中率。
其中,所述统计模块,用于周期性地统计并更新每个应用的访存次数和行命中率,包括:
对于每个应用,在每个bank中设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中交易的个数进行计数;同时为每个应用设置一个访存次数计数器记录所述应用在一个周期内的访存次数;使用所述应用一个周期内行命中交易的个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
其中,作为一种优选的方式,如图3所示,所述分类模块,用于根据各个应用的访存特征将所述应用分类,包括:
设置访存次数阈值,将一个周期内的访存次数小于所述访存次数阈值的应用分为计算密集型应用,将一个周期内的访存次数大于或等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于或等于所述行命中率阈值的应用分为行局部性高的应用。
其中,所述bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述划分策略为每种类型的每个应用分配相应数量的bank,包括:当划分为计算和访存密集型,及行局部性高/低时,
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
其中,所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。
从上述实施例可以看出,相对于现有技术,上述实施例中提供的主存bank划分方法及系统,根据应用的访存密集度和行局部性动态调整bank划分策略,从而满足各应用对bank数量的需求,增加应用bank级别的并行性,提升主存访问效率。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种主存bank划分方法,包括:
周期性地统计各个应用运行时的访存特征;
根据各个应用的访存特征将所述应用分类;
根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank。
2.如权利要求1所述的方法,其特征在于:
所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;所述访存密集度指每个周期内该应用的访存次数;所述行局部性指每个周期内该应用的行命中率;
所述周期性地统计各个应用运行时的访存特征包括:周期性地统计并更新每个应用的访存次数和行命中率。
3.如权利要求2所述的方法,其特征在于:
所述周期性地统计并更新每个应用的访存次数和行命中率,包括:
对于每个应用,在每个中bank设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中交易的个数进行计数;同时为每个应用设置一个访存次数计数器记录所述应用在一个周期内的访存次数;使用所述应用一个周期内行命中交易的个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
4.如权利要求2所述的方法,其特征在于:
所述根据各个应用的访存特征将所述应用分类,包括:
设置访存次数阈值,将一个周期内的访存次数小于所述访存次数阈值的应用分为计算密集型应用,将一个周期内的访存次数大于或等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于或等于所述行命中率阈值的应用分为行局部性高的应用。
5.如权利要求4所述的方法,其特征在于:
所述根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank,包括:
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
6.如权利要求5所述的方法,其特征在于:
所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器动态随机存取存储器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。
7.一种主存bank划分装置,包括:
统计模块,用于周期性地统计各个应用运行时的访存特征;
分类模块,用于根据各个应用的访存特征将所述应用分类;
bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank。
8.如权利要求7所述的装置,其特征在于:
所述应用运行时的访存特征包括:访存密集度和访存序列的行局部性;所述访存密集度指每个周期内该应用的访存次数;所述行局部性指每个周期内该应用的行命中率;
所述统计模块,用于周期性地统计各个应用运行时的访存特征包括:周期性地统计并更新每个应用的访存次数和行命中率。
9.如权利要求8所述的装置,其特征在于:
所述统计模块,用于周期性地统计并更新每个应用的访存次数和行命中率,包括:
对于每个应用,在每个bank中设置一个对应与所述应用的行地址寄存器记录所述应用访问所述bank的上一个访存请求的行地址,然后用所述应用访问所述bank的新访存请求的行地址与记录的行地址进行比较,如果两个地址相同,则记为一个行命中交易,对一个周期内行命中交易的个数进行计数;同时为每个应用设置一个访存次数计数器记录所述应用在一个周期内的访存次数;使用所述应用一个周期内行命中交易的个数除以所述应用的访存次数得到所述应用一个周期内的行命中率。
10.如权利要求8所述的装置,其特征在于:
所述分类模块,用于根据各个应用的访存特征将所述应用分类,包括:
设置访存次数阈值,将一个周期内的访存次数小于所述访存次数阈值的应用分为计算密集型应用,将一个周期内的访存次数大于或等于所述访存次数阈值的应用分为访存密集型应用;和/或,
设置行命中率阈值,将一个周期内的行命中率小于所述行命中率阈值的应用分为行局部性低的应用,将一个周期内的行命中率大于或等于所述行命中率阈值的应用分为行局部性高的应用。
11.如权利要求8所述的装置,其特征在于:
所述bank划分模块,用于根据各类应用占所有应用的比例选择相应的主存bank划分策略,根据所述主存bank划分策略为每种类型的每个应用分配相应数量的bank,包括:当划分为计算和访存密集型,及行局部性高/低时,
当多核处理器系统内的所有应用均为计算密集型应用时,将主存bank资源平均分配给各个应用;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,不分配专门的bank给该部分计算密集型应用,且令该部分计算密集型应用访问所有主存bank;
当多核处理器系统内的所有应用中部分应用为计算密集型应用,另一部分为访存密集型应用时,或者,当多核处理器系统内的所有应用均为访存密集型应用时,对于行局部性高的访存密集型应用,为每个应用分配最小划分单元MPU个bank;对于行局部性低的访存密集型应用,每两个应用共享2×MPU个bank。
12.如权利要求11所述的装置,其特征在于:
所述最小划分单元MPU=(Nrank·Nbank)/(Ncore·MI),其中,Ncore为处理器核的数目,Nrank为Ncore核处理器动态随机存取存储器DRAM主存系统rank的数目,Nbank为每个rank中bank的数目,MI为访存密集型应用占Ncore核处理器上总应用的比例,值为0到1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611206795.7A CN106874106A (zh) | 2016-12-23 | 2016-12-23 | 一种主存bank划分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611206795.7A CN106874106A (zh) | 2016-12-23 | 2016-12-23 | 一种主存bank划分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106874106A true CN106874106A (zh) | 2017-06-20 |
Family
ID=59164936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611206795.7A Withdrawn CN106874106A (zh) | 2016-12-23 | 2016-12-23 | 一种主存bank划分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874106A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506152A (zh) * | 2017-09-12 | 2017-12-22 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
CN108628797A (zh) * | 2017-03-15 | 2018-10-09 | 北京北大众志微系统科技有限责任公司 | 一种实现体划分的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1613064A (zh) * | 2002-01-03 | 2005-05-04 | 英特尔公司 | 用于动态调整存储器页面关闭策略的方法 |
CN101236547A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 提供动态存储库页面策略的系统和方法 |
CN102662853A (zh) * | 2012-03-22 | 2012-09-12 | 北京北大众志微系统科技有限责任公司 | 实现使用存储级并行的内存管理方法及装置 |
CN103136120A (zh) * | 2012-12-31 | 2013-06-05 | 北京北大众志微系统科技有限责任公司 | 行缓冲管理策略确定方法和装置、bank划分方法和装置 |
-
2016
- 2016-12-23 CN CN201611206795.7A patent/CN106874106A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1613064A (zh) * | 2002-01-03 | 2005-05-04 | 英特尔公司 | 用于动态调整存储器页面关闭策略的方法 |
CN101236547A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 提供动态存储库页面策略的系统和方法 |
CN102662853A (zh) * | 2012-03-22 | 2012-09-12 | 北京北大众志微系统科技有限责任公司 | 实现使用存储级并行的内存管理方法及装置 |
CN103136120A (zh) * | 2012-12-31 | 2013-06-05 | 北京北大众志微系统科技有限责任公司 | 行缓冲管理策略确定方法和装置、bank划分方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628797A (zh) * | 2017-03-15 | 2018-10-09 | 北京北大众志微系统科技有限责任公司 | 一种实现体划分的方法及装置 |
CN107506152A (zh) * | 2017-09-12 | 2017-12-22 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
CN107506152B (zh) * | 2017-09-12 | 2020-05-08 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105068940B (zh) | 一种基于Bank划分的自适应页策略确定方法 | |
EP3040868B1 (en) | Memory resource optimization method and apparatus | |
CN102609312B (zh) | 基于公平性考虑的短作业优先内存请求调度方法 | |
US6851030B2 (en) | System and method for dynamically allocating associative resources | |
KR20210021302A (ko) | 메모리 제어기에서의 리프레시 방식 | |
US8880809B2 (en) | Memory controller with inter-core interference detection | |
CN107291424A (zh) | 基于闪存的加速器和包含其的计算设备 | |
CN103136120B (zh) | 行缓冲管理策略确定方法和装置、bank划分方法和装置 | |
CN106708626A (zh) | 一种面向低功耗的异构多核共享cache划分方法 | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
US11687144B2 (en) | System and methods for on-chip memory (OCM) port throttling for machine learning operations | |
CN104346284A (zh) | 一种内存管理方法及内存管理设备 | |
CN107436798A (zh) | 一种基于numa节点的进程访问方法及装置 | |
CN109408411A (zh) | 基于数据访问次数的GPGPU的L1 Cache管理方法 | |
EP3367246B1 (en) | Memory partitioning for a computing system with memory pools | |
CN106874106A (zh) | 一种主存bank划分方法及装置 | |
CN102866923A (zh) | 对称多核的高效一致性侦听过滤装置 | |
CN112148665B (zh) | 缓存的分配方法及装置 | |
CN116724287A (zh) | 一种内存控制方法及内存控制装置 | |
CN108959149A (zh) | 一种基于共享内存的多核处理器交互总线设计方法 | |
CN108628676A (zh) | 一种面向多核系统的内存管理装置及方法 | |
CN106547488A (zh) | 一种混合缓存管理方法 | |
CN106407131A (zh) | 内存访问方法和装置 | |
WO2022199258A1 (zh) | 一种缓存管理方法及存储设备 | |
WO2021120218A1 (zh) | 一种提升ssd利用率的方法、存储装置及ssd控制器 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170620 |
|
WW01 | Invention patent application withdrawn after publication |