CN108604206B - 一种内存分配方法和设备 - Google Patents
一种内存分配方法和设备 Download PDFInfo
- Publication number
- CN108604206B CN108604206B CN201680058809.7A CN201680058809A CN108604206B CN 108604206 B CN108604206 B CN 108604206B CN 201680058809 A CN201680058809 A CN 201680058809A CN 108604206 B CN108604206 B CN 108604206B
- Authority
- CN
- China
- Prior art keywords
- rank
- memory
- packet
- processor
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page colouring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
一种内存分配方法和设备,应用于包括处理器和内存的计算机***中。所述内存包括至少两个rank分组,rank分组包括至少两个rank,同一rank分组中的各rank的地址中的第一部分地址信息相同,第一部分地址信息与内存页的物理地址中的第一预设位置的信息存在映射关系,第一预设位置为物理地址中的页面号信息的一部分。方法包括:处理器接收携带待访问的虚拟地址的内存访问请求;当确定没有为该虚拟地址分配内存页时,根据各rank分组的访问量,从至少两个rank分组中选择目标rank分组;从空闲的内存页中为内存访问请求选择待分配的内存页,待分配的内存页的物理地址中的第一预设位置的信息与目标rank分组中的rank的地址中的第一部分地址信息相同。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种内存分配的方法和设备。
背景技术
计算机***包括处理器、内存控制器和内存,如图1所示,内存包括多个rank,rank可以理解为多个存储单元构成的一个矩阵,该矩阵的横标记为row(即ROW),列标记为column(简称COL)。一个rank可以与多个内存页之间存在映射关系,每个内存页与一个rank之间存在映射关系,一个内存页包括多个存储单元。在图1中,每个rank包括4个ROW和4个COL,一个内存页包括2个存储单元。
处理器访问内存的过程可以包括:处理器接收到应用程序发送的携带待访问的虚拟地址的内存访问请求之后,若查询到已为该待访问的虚拟地址分配了内存页,则向内存控制器发送携带该待访问的虚拟地址对应的物理地址的内存访问请求。内存控制器需要先激活待访问的存储单元,才能对存储单元进行访问。其中,内存控制器可以同时激活一个或多个rank。处理器若查询到没有为该待访问的虚拟地址分配内存页,则可以为该应用程序随机分配一个空闲内存页。
然而,上述内存分配方法,可能使得处理器为一个应用程序分配的内存页均集中在一个rank中,这样,在处理器访问内存的过程,由于内存控制器激活一个rank时,每次至多激活该rank中的4个ROW,因此会降低存取数据的速率。
发明内容
本发明的实施例提供一种内存分配方法和装置,用以在处理器访问内存的过程中,提高内存控制器存取数据的速率,从而提高整体性能。
为了达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种内存分配方法,应用于计算机***中,计算机***包括处理器和内存,内存中包括至少两个rank分组,每个rank分组中包括至少两个rank,同一个rank分组中的各个rank的地址中的第一部分地址信息相同,第一部分地址信息与内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,第一预设位置为物理地址中的页面号信息中的一部分。该方法可以包括:处理器接收携带待访问的虚拟地址的内存访问请求;当处理器确定没有为待访问的虚拟地址分配内存页时,根据该至少两个rank分组的访问量,从该至少两个rank分组中选择目标rank分组;接着,从空闲的内存页中为内存访问请求选择待分配的内存页,待分配的内存页的物理地址中的第一预设位置的信息与目标rank分组中的rank的地址中的第一部分地址信息相同。
在本申请提供的内存分配方法中,一方面,由于同一个rank分组中的各个rank的地址中的第一部分地址信息相同,第一部分地址信息与内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,一个内存页可以包括多个存储单元,因此,处理器可以根据一定的分配策略,将一个内存页中的各存储单元分布在一个rank分组的各rank中,从而保证为一个应用程序分配的内存页可以跨多个rank,这样,在处理器访问内存的过程中,内存控制器可以同时激活多个rank,从而提高了存取数据的速率。另一方面,根据rank分组的访问量确定目标rank分组,并将目标rank分组对应的空闲内存页作为待分配的内存页。相比现有技术中的,将任一个空闲内存页作为待分配的内存页的方案相比,若将访问量较高的rank分组对应的空闲内存页作为待分配的内存页,则处理器在对该内存页进行访问的过程中,切换rank分组的概率较小,从而减小切换rank的开销。
在一种可能的设计中,内存中每个rank的地址还可以包括第二部分地址信息,第二部分地址信息与内存页的物理地址中的第二预设位置的信息之间存在映射关系,第二预设位置为物理地址中的页偏移信息中的一部分。
在一种可能的设计中,处理器根据至少两个rank分组的访问量,从至少两个rank分组中选择目标rank分组,可以包括:处理器从至少两个rank分组中,选择访问量最大的rank分组为目标rank分组。这样,可以使得处理器在对该内存页进行访问的过程中,切换rank分组的概率会越小,从而减小切换rank的开销。
在一种可能的设计中,处理器根据至少两个rank分组的访问量,从至少两个rank分组中选择目标rank分组,可以包括:处理器获取至少两个rank分组中各个rank的访问量;然后,当确定至少两个rank分组中的第一rank分组中的第一rank的访问量超过至少两个rank分组中其他rank的访问量的总和时,选择至少两个rank分组中的第二rank分组为目标rank分组,其中,第二rank分组的访问量低于第一rank分组的访问量。这样,可以通过分配目标rank分组对应的空闲内存页,在一定程度上均衡内存的各rank的访问量,从而提高整体性能。
在一种可能的设计中,处理器根据至少两个rank分组的访问量,从至少两个rank分组中选择目标rank分组,可以包括:处理器获取至少两个rank分组中各个rank的访问量;然后,从至少两个rank分组中选择访问量低于第一预设阈值且不为0的rank所属的rank分组为目标rank分组。这样,可以通过分配目标rank分组对应的空闲内存页,从而提高该目标rank的访问量,从而在一定程度上使得内存的各rank的访问量趋于均衡,从而提高整体性能。并且,不选择访问量为0的rank所属的rank分组为目标rank分组,能够减小切换rank的开销。
在一种可能的设计中,处理器根据至少两个rank分组的访问量,从至少两个rank分组中选择目标rank分组,可以包括:处理器从至少两个rank分组中选择访问量低于第二预设阈值且不为0的rank分组为目标rank分组。这样,可以通过分配目标rank分组对应的空闲内存页,从而提高该目标rank的访问量,从而在一定程度上使得内存的各rank的访问量趋于均衡,从而提高整体性能。并且,不选择访问量为0的rank所属的rank分组为目标rank分组,能够减小切换rank的开销。
第二方面,提供一种计算设备,该计算设备包括处理器和内存,内存中包括至少两个rank分组,每个rank分组中包括至少两个rank,同一个rank分组中的各个rank的地址中的第一部分地址信息相同,第一部分地址信息与内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,第一预设位置为物理地址中的页面号信息中的一部分。处理器用于:接收内存访问请求,内存访问请求中携带待访问的虚拟地址;当确定没有为待访问的虚拟地址分配内存页时,根据该至少两个rank分组的访问量,从至少两个rank分组中选择目标rank分组;然后,从空闲的内存页中为内存访问请求选择待分配的内存页,其中,待分配的内存页的物理地址中的第一预设位置的信息与目标rank分组中的rank的地址中的第一部分地址信息相同。
在一种可能的设计中,内存中每个rank的地址还包括第二部分地址信息,第二部分地址信息与内存页的物理地址中的第二预设位置的信息之间存在映射关系,第二预设位置为物理地址中的页偏移信息中的一部分。
在一种可能的设计中,处理器具体可以用于:从至少两个rank分组中,选择访问量最大的rank分组为目标rank分组。
在一种可能的设计中,处理器具体可以用于:当确定至少两个rank分组中的第一rank分组中的第一rank的访问量超过至少两个rank分组中其他rank的访问量的总和时,选择至少两个rank分组中的第二rank分组为目标rank分组,其中,第二rank分组的访问量低于第一rank分组的访问量。
在一种可能的设计中,处理器具体可以用于:获取至少两个rank分组中各个rank的访问量;从至少两个rank分组中选择访问量低于第一预设阈值且不为0的rank所属的rank分组为目标rank分组。
在一种可能的设计中,处理器具体可以用于:从至少两个rank分组中选择访问量低于第二预设阈值且高于0的rank分组为目标rank分组。
第三方面,提供了一种内存的物理地址的结构,应用于计算机***中,计算机***包括处理器和内存,内存中包括至少两个rank分组,每个rank分组中包括至少两个rank,同一个rank分组中的各个rank的地址中的第一部分地址信息相同。内存中每个rank的地址还包括第二部分地址信息。该物理地址包括页面号信息和页偏移信息,页面号信息中的第一预设位置的信息与该第一部分地址信息之间存在映射关系。页偏移信息中的第二预设位置的信息与该第二部分地址信息之间存在映射关系。
第四方面,提供一种获得rank地址的方法,该方法可以包括:内存控制器获取物理地址的页面号信息中的第一预设位置的信息,得到rank的第一部分地址信息,并获取物理地址的页偏移信息中的第二预设位置的信息,得到该rank的第二部分地址信息;然后,根据rank的第一部分地址信息和rank的第二部分地址信息,得到rank的地址。其中,该物理地址的结构可以是如第三方面所述的物理地址的结构。
可选的,基于该第四方面,内存控制器可以将第一部分地址信息相同的rank归为同一个rank分组,从而统计出预设时间段内该rank所属的rank分组的访问量。
第五方面,提供一种计算设备,该计算设备包括内存控制器。其中,该内存控制器用于:获取物理地址的页面号信息中的第一预设位置的信息,得到rank的第一部分地址信息,并获取物理地址的页偏移信息中的第二预设位置的信息,得到该rank的第二部分地址信息;然后,根据rank的第一部分地址信息和rank的第二部分地址信息,得到rank的地址。其中,该物理地址的结构可以是如第三方面所述的物理地址的结构。
又一方面,本发明实施例提供了一种处理器,所述处理器中包含有分别用于执行上述第一方面以及第一方面的各可能的实施方式所提供的方法的模块。
又一方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当计算设备的至少一个处理器执行该计算机执行指令时,计算设备执行上述第一方面或者上述第一方面的任一种可能的实现方式所提供的内存分配方法。
又一方面,本发明实施例提供了一种内存控制器,所述内存控制器中包含有分别用于执行上述第三方面中所示的方法的模块。
又一方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当计算设备的至少一个处理器执行该计算机执行指令时,计算设备执行上述第三方面所提供的内存分配方法。
可以理解地,上述提供的任一种计算设备或计算机存储介质均用于执行上文所提供的缓存替换的方法,因此,其所能达到的有益效果可参考上文所提供的相应的缓存替换的方法中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种内存的结构示意图;
图2为本发明实施例提供的技术方案所适用的一种***的架构示意图;
图3为本发明实施例提供的一种内存的结构示意图;
图4为本发明实施例提供的一种内存的物理地址的结构示意图;
图5为本发明实施例提供的一种分配内存的方法流程图;
图6为本发明实施例提供的一种获取rank的地址的方法流程图;
图7为本发明实施例提供的一种计算设备的结构示意图;
图8为本发明实施例提供的另一种计算设备的结构示意图。
具体实施方式
本发明实施例提供的技术方案可以适用于如图2所示的计算机***中,图2所示的计算机***包括:处理器21、内存控制器22和内存23。处理器21是计算机***的控制中心。内存控制器22用于对内存23中的数据进行管理。
在本发明实施例中,内存23被分为了多个rank分组,每个rank分组可以包括至少两个rank。其中,每个rank分组包括的rank的个数可以是预设的,也可以根据实际要求(例如,内存控制器存取数据的速率的要求,或切换rank的开销的要求等)变更。rank可以是动态随机存取存储器(dynamic random access memory,DRAM)芯片(chip)的集合,这些芯片连接到同一个片选信号。
示例的,一个rank分组可以包括2个rank,或者4个rank。不同rank分组包括的rank的个数可以相等也可以不相等,一般地,不同rank分组中包含的rank的个数相等。如图3所示,内存包括2个rank分组,每个rank分组包括2个rank,每个rank包括4个ROW和4个COL,每个rank分组包括3个内存页,每个内存页包括4个存储单元。
每个rank分组可以与一个或多个内存页之间存在映射关系,每个内存页包含的存储单元可以分布在一个rank分组的各rank中。一个内存页可以包括多个存储单元。本发明实施例对一个内存页中的各存储单元在一个rank分组中的分布情况不进行限定,例如,可以按照均分的分配策略,将一个内存页中的各存储单元分布在一个rank分组的各rank中。
需要说明的是,一个内存页中的各存储单元在一个rank分组中的分布情况,涉及确定空闲的内存页的方法。可以理解的,现有技术中提供的一个内存页的各存储空间分布在一个rank中,本发明实施例中,一个内存页的各存储空间分布在一个rank分组的各个rank中。
一个内存页分布在一个rank分组的各rank中的一种实现方式如下:每个存储单元有一个物理地址。物理地址包括页面号(PAGE NUM)信息和页面偏移(PAGE OFFSET)信息,即:物理地址包括PAGE NUM字段和PAGE OFFSET字段。每个rank的地址包括第一部分地址信息和第二部分地址信息。第一部分地址信息与第一预设位置的信息之间存在映射关系,第一预设位置为物理地址中的页面号信息中的一部分。并且,同一个rank分组中的各个rank的地址中的第一部分地址信息相同。另外,第二部分地址信息与第二预设位置的信息之间存在映射关系,第二预设位置为物理地址中的页面偏移信息中的一部分。内存页的物理地址,是指内存页中包括的存储单元的物理地址。
如图4所示,是本发明实施例提供的一种内存页的物理地址的结构示意图。PAGENUM字段可以包括rank的第一部分地址信息、该物理地址所在的ROW和该物理地址所在的COL。PAGE OFFSET字段包括RANK的第二部分地址信息、BA、BG、COL和Block Offset(块偏移量)。其中,BA是bank address的缩写,表示bank的地址。BG是bank group address的缩写,表示bank组的地址。其中,一个rank可以包括至少两个bank组,一个bank组可以包括至少两个bank。关于rank、bank组和bank之间的关系可以参考现有技术,此处不再赘述。
例如,若一个rank分组包括2个rank,rank1和rank2,则可以用2位二进制数来标记每个rank的地址,例如rank1的地址可以标记为00,rank2的地址可以标记为01。该情况下,每个rank的地址中的高位的二进制数可以位于页面号字段,低位的二进制数可以位于页面偏移字段。由于一个内存页包括多个存储单元,因此,可以通过该方式将一个内存页包括的部分存储单元设置在rank1中,并将其他存储单元设置在rank2中,从而保证将一个内存页分布在一个rank分组的各rank中。
又如,若一个rank分组包括4个rank,rank1、rank2、rank3和rank4,则可以用3位二进制数来标记每个rank的地址,例如rank1的地址可以标记为000,rank2的地址可以标记为001,rank3的标识可以标记为010,rank4的标记可以标记为011。该情况下,每个rank的地址中的最高位的二进制数(即“0”)可以位于页面号字段,其他的二进制数(如:“00”、“01”、“10”和“11”)可以位于页面偏移字段。由于一个内存页包括多个存储单元,因此,可以通过该方式将一个内存页包括的一部分存储单元设置在rank1中,一部分存储单元设置在rank2中,一部分存储单元设置在rank3中,其他存储单元设置在rank4中,从而保证将一个内存页分布在一个rank分组的各rank中。
本文中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。本文中的术语“多个”是指两个或两个以上。
如图5所示,为本发明实施例提供的一种内存分配方法的流程示意图。该方法的执行主体具体可以是处理器中的操作***。该方法可以包括以下步骤S101~S104:
S101:处理器接收内存访问请求,内存访问请求中携带待访问的虚拟地址。
该内存访问请求可以是读内存访问请求,用于读取待访问的虚拟地址对应的物理地址所标记的存储单元中存储的数据。该内存访问请求也可以是写请求,用于向待访问的虚拟地址对应的物理地址中所标记的存储单元中写数据。若内存访问请求时写请求,则内存访问请求中还可以携带待写数据。
处理器中的操作***为应用程序提供的是虚拟地址,并会根据应用程序的需求,为该应用程序分配内存,并记录虚拟地址与物理地址之间的映射关系。当处理器接收到内存访问请求时,可以先将该内存访问请求中携带的待访问的虚拟地址转换成物理地址,然后,查询是否已经记录了该待访问的虚拟地址与该物理地址之间的映射关系。若查询到没有记录该待访问的虚拟地址与该物理地址之间的映射关系,说明:还没有为该待访问的虚拟地址分配内存页。该情况下,可以通过执行以下步骤S102~S104来为该虚拟地址分配内存页。然后,可以将携带该物理地址的内存访问请求发送至内存控制器,内存控制器可以在接收到携带该物理地址的内存访问请求之后,对该物理地址所标记的存储单元进行访问。若已经记录了待访问的虚拟地址与该物理地址之间的映射关系,说明:已经为该待访问的虚拟地址分配了内存页。该情况下,可以将携带该物理地址的内存访问请求发送至内存控制器,内存控制器可以在接收到携带该物理地址的内存访问请求之后,对该物理地址所标记的存储单元进行访问。
S102:当处理器确定没有为待访问的虚拟地址分配内存页时,处理器获取内存中各个rank分组的访问量。
rank分组的访问量,可以是处理器访问该rank分组的次数。内存控制器可以周期性地或者触发性地统计至少两个rank分组中的各个rank分组的访问量,然后主动向处理器发送该至少两个rank分组中的各个rank分组的访问量,或者由处理器主动向内存控制器获取该至少两个rank分组中的各个rank分组的访问量。
内存控制器在接收到处理器发送的携带物理地址的内存访问请求之后,可以解析给物理地址,得到rank的地址,从而可以统计出预设时间段内该rank的访问量,进而可以统计出预设时间段内该rank所属的rank分组的访问量。如图6所示,在本发明实施例提供的“内存控制器解析物理地址,得到rank的地址”的方法可以包括以下步骤S1~S2:
S1:内存控制器获取物理地址的页面号信息中的第一预设位置的信息,得到rank的第一部分地址信息,并获取物理地址的页偏移信息中的第二预设位置的信息,得到该rank的第二部分地址信息。
在如图4所示的物理地址中,内存控制器可以获取PAGE NUM字段中的第一预设位置的信息,得到rank的第一部分地址信息;获取PAGE OFFSET字段的第一预设位置的信息,得到rank的第二部分地址信息。
S2:内存控制器根据rank的第一部分地址信息和rank的第二部分地址信息,得到rank的地址。
基于S1中的示例,假设第一部分地址的信息为“0”,第二部分地址信息为“01”,那么,rank的地址可以为“001”。
基于上述S1~S2,内存控制器可以将第一部分地址信息相同的rank归为同一个rank分组,从而统计出预设时间段内该rank所属的rank分组的访问量。
S103:处理器根据各个rank分组的访问量,从至少两个rank分组中选择目标rank分组。
处理器可以在预设时间内获取各个rank分组的访问量,也可以是在当处理器确定没有为待访问的虚拟地址分配内存页时,获取各个rank分组的访问量。处理器可以从内存控制器获取各个rank分组的访问量,也可以从缓存中获取各个rank分组的访问量,其中,缓存中的各个rank分组的访问量可以是处理器在接收该内存访问请求之前得到的各个rank分组的访问量。
可选的,上述S103可以包括以下几种实现方式:
方式一:处理器从至少两个rank分组中,选择访问量最大的rank分组为目标rank分组。
可以理解的,上文提供的访问量是指历史访问量。历史访问量对未来访问量具有参考作用,具体的,可以认为历史访问量越高的rank分组,在未来被访问的概率就会越高。因此,将访问量最高的rank分组对应的空闲内存页作为待分配的内存页,可以使得处理器在对该内存页进行访问的过程中,切换rank分组的概率会越小,从而减小切换rank的开销。可选的,实际实现时,为了扩大选择范围,处理器可以将访问量较大的rank分组,作为目标rank分组。即:处理器可以从至少两个rank分组中,选择访问量大于预设阈值的任一个分组作为目标rank组。
S104:处理器从空闲的内存页中为内存访问请求选择待分配的内存页,其中,待分配的内存页的物理地址中的第一预设位置的信息与目标rank分组中的rank的地址中的第一部分地址信息相同。
内存页可以分为:空闲内存页和非空闲内存页。其中,空闲内存页中的所有存储单元中没有存储数据;非空闲内存页中的一个或多个存储单元中存储数据。在分配内存的过程中,处理器将空闲内存页作为待分配内存页。若目标rank分组与多个空闲内存页之间存在映射关系,则处理器可以将该多个空闲内存页中的任一个空闲内存页作为待分配的内存页。若目标rank分组不与空闲内存页之间存在映射关系,则处理器可以在根据其他rank分组的访问量,重写确定目标rank分组。
本发明实施例提供的内存分配方法中,一方面,由于同一个rank分组中的各个rank的地址中的第一部分地址信息相同,第一部分地址信息与内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,一个内存页可以包括多个存储单元,因此,处理器可以根据一定的分配策略,将一个内存页中的各存储单元分布在一个rank分组的各rank中,从而保证为一个应用程序分配的内存页可以跨多个rank,这样,在处理器访问内存的过程中,内存控制器可以同时激活多个rank,从而提高了存取数据的速率。另一方面,根据rank分组的访问量确定目标rank分组,并将目标rank分组对应的空闲内存页作为待分配的内存页。相比现有技术中的,将任一个空闲内存页作为待分配的内存页的方案相比,若将访问量较高的rank分组对应的空闲内存页作为待分配的内存页,则处理器在对该内存页进行访问的过程中,切换rank分组的概率较小,从而减小切换rank的开销。
可选的,上述S103还可以通过以下任一方式实现:
方式二:处理器获取至少两个rank分组中各个rank的访问量;然后,确定至少两个rank分组中的第一rank分组中的第一rank的访问量超过至少两个rank分组中其他rank的访问量的总和;选择至少两个rank分组中的第二rank分组为目标rank分组,其中,第二rank分组的访问量低于第一rank分组的访问量。
rank的访问量,是指处理器访问该rank的访问次数。至少两个rank分组中的第一rank分组中的第一rank的访问量超过至少两个rank分组中其他rank的访问量的总和,说明:内存的访问量集中在该rank。该情况可以认为是异常情况。该情况下,将访问量低于第一rank分组的第二rank分组作为目标rank分组,可以通过分配目标rank分组对应的空闲内存页,在一定程度上均衡内存的各rank的访问量,从而提高整体性能。可选的,处理器可以将访问量小于第一rank分组的rank分组,作为第二rank分组。
方式三:处理器获取至少两个rank分组中各个rank的访问量;然后从至少两个rank分组中选择访问量低于第一预设阈值且高于0的rank所属的rank分组为目标rank分组。
其中,访问量低于第一预设阈值且高于0的rank所属的rank分组,中的“访问量”是对rank而言的访问量。将访问量低于第一预设阈值的rank所属的rank分组作为目标rank分组,可以通过分配目标rank分组对应的空闲内存页,从而提高该目标rank的访问量,从而在一定程度上使得内存的各rank的访问量趋于均衡,从而提高整体性能。不选择访问量为0的rank所属的rank分组为目标rank分组,是由于选择访问量为0的rank所属的rank分组,会使得原先不会被访问到的rank分组,开始有访问量,也就是说,该过程中必定会切换rank,从而增加了切换rank的开销。
方式四:处理器从至少两个rank分组中选择访问量小于第二预设阈值且不为0的rank分组为目标rank分组。
其中,访问量低于小于第二预设阈值且不为0的rank分组,中的“访问量”是对rank分组而言的访问量。将访问量低于第二预设阈值的rank分组作为目标rank分组,可以通过分配目标rank分组对应的空闲内存页,从而提高该目标rank的访问量,从而在一定程度上使得内存的各rank的访问量趋于均衡,从而提高整体性能。不选择访问量为0的rank分组为目标rank分组,会使得原先不会被访问到的rank分组,开始有访问量,也就是说,该过程中必定会切换rank,从而增加了切换rank的开销。
上述主要从处理器的角度对本发明实施例提供的方案进行了介绍。可以理解的是,为了实现上述各个功能,处理器包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对处理器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图7示出了一种处理器7的结构示意图。处理器7可以包括:接收模块701和选择模块703。可选的,处理器7还可以包括:获取模块702。其中,接收模块701用于支持处理器7执行图4中的S101,和/或用于本文所描述的技术的其它过程。获取模块702用于支持处理器7执行图4中的S102,和/或用于本文所描述的技术的其它过程。选择模块703用于支持处理器7执行图4中的S103至S104,和/或用于本文所描述的技术的其它过程。另外,处理器7还可以包括:存储模块。存储模块用于存储处理器7执行上文所提供的任一内存分配方法所对应的程序代码和数据。
如图8所示,为本发明实施例提供的一种计算设备8的结构示意图。计算设备8可以包括:处理器801、内存控制器802、内存803、收发器804以及总线805;其中,处理器801、内存控制器802、内存803、收发器805通过总线805相互连接。处理器801可以是CPU,通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。总线805可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理模块执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(readonly memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围。
Claims (12)
1.一种内存分配方法,其特征在于,所述方法应用于计算机***中,所述计算机***包括处理器和内存,所述内存中包括至少两个rank分组,每个rank分组中包括至少两个rank,同一个rank分组中的各个rank的物理地址中的第一部分地址信息相同,所述第一部分地址信息与所述内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,所述第一预设位置为物理地址中的页面号信息中的一部分;所述方法包括:
所述处理器接收内存访问请求,所述内存访问请求中携带待访问的虚拟地址;
当所述处理器确定没有为所述待访问的虚拟地址分配内存页时,所述处理器根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组;
所述处理器从空闲的内存页中为所述内存访问请求选择待分配的内存页,其中,所述待分配的内存页的物理地址中的所述第一预设位置的信息与所述目标rank分组中的rank的地址中的所述第一部分地址信息相同,所述待分配的内存页的多个存储单元分别设置在所述目标rank分组中的不同rank中。
2.根据权利要求1所述的内存分配方法,其特征在于,所述内存中每个rank的地址还包括第二部分地址信息,所述第二部分地址信息与内存页的物理地址中的第二预设位置的信息之间存在映射关系,所述第二预设位置为物理地址中的页偏移信息中的一部分。
3.根据权利要求1或2所述的内存分配方法,其特征在于,所述处理器根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组,包括:
所述处理器从所述至少两个rank分组中,选择访问量最大的rank分组为目标rank分组。
4.根据权利要求1或2所述的内存分配方法,其特征在于,所述处理器根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组,包括:
所述处理器获取所述至少两个rank分组中各个rank的访问量;
当所述至少两个rank分组中的第一rank分组中的第一rank的访问量超过所述至少两个rank分组中其他rank的访问量的总和时,所述处理器选择所述至少两个rank分组中的第二rank分组为目标rank分组,其中,所述第二rank分组的访问量低于所述第一rank分组的访问量。
5.根据权利要求1或2所述的内存分配方法,其特征在于,所述处理器根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组包括:
所述处理器获取所述至少两个rank分组中各个rank的访问量;
所述处理器从所述至少两个rank分组中选择访问量低于第一预设阈值且不为0的rank所属的rank分组为目标rank分组。
6.根据权利要求1或2所述的内存分配方法,其特征在于,所述处理器根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组包括:
所述处理器从所述至少两个rank分组中选择访问量低于第二预设阈值且不为0的rank分组为所述目标rank分组。
7.一种计算设备,其特征在于,所述计算设备包括处理器和内存,所述内存中包括至少两个rank分组,每个rank分组中包括至少两个rank,同一个rank分组中的各个rank的物理地址中的第一部分地址信息相同,所述第一部分地址信息与所述内存中的内存页的物理地址中的第一预设位置的信息之间存在映射关系,所述第一预设位置为物理地址中的页面号信息中的一部分;所述处理器用于:
接收内存访问请求,所述内存访问请求中携带待访问的虚拟地址;
当确定没有为所述待访问的虚拟地址分配内存页时,根据所述至少两个rank分组的访问量,从所述至少两个rank分组中选择目标rank分组;
从空闲的内存页中为所述内存访问请求选择待分配的内存页,其中,所述待分配的内存页的物理地址中的所述第一预设位置的信息与所述目标rank分组中的rank的地址中的所述第一部分地址信息相同,所述待分配的内存页的多个存储单元分别设置在所述目标rank分组中的不同rank中。
8.根据权利要求7所述的计算设备,其特征在于,所述内存中每个rank的地址还包括第二部分地址信息,所述第二部分地址信息与内存页的物理地址中的第二预设位置的信息之间存在映射关系,所述第二预设位置为物理地址中的页偏移信息中的一部分。
9.根据权利要求7或8所述的计算设备,其特征在于,所述处理器具体用于:
从所述至少两个rank分组中,选择访问量最大的rank分组为目标rank分组。
10.根据权利要求7或8所述的计算设备,其特征在于,所述处理器具体用于:
当所述至少两个rank分组中的第一rank分组中的第一rank的访问量超过所述至少两个rank分组中其他rank的访问量的总和时,选择所述至少两个rank分组中的第二rank分组为目标rank分组,其中,所述第二rank分组的访问量低于所述第一rank分组的访问量。
11.根据权利要求7或8所述的计算设备,其特征在于,所述处理器具体用于:
获取所述至少两个rank分组中各个rank的访问量;
从所述至少两个rank分组中选择访问量低于第一预设阈值且不为0的rank所属的rank分组为目标rank分组。
12.根据权利要求7或8所述的计算设备,其特征在于,所述处理器具体用于:
从所述至少两个rank分组中选择访问量低于第二预设阈值且高于0的rank分组为所述目标rank分组。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/106987 WO2018094620A1 (zh) | 2016-11-23 | 2016-11-23 | 一种内存分配方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108604206A CN108604206A (zh) | 2018-09-28 |
CN108604206B true CN108604206B (zh) | 2021-10-22 |
Family
ID=62194526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680058809.7A Active CN108604206B (zh) | 2016-11-23 | 2016-11-23 | 一种内存分配方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11232031B2 (zh) |
EP (1) | EP3534264B1 (zh) |
CN (1) | CN108604206B (zh) |
WO (1) | WO2018094620A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11061819B2 (en) | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
JP2021179672A (ja) * | 2020-05-11 | 2021-11-18 | ソニーセミコンダクタソリューションズ株式会社 | メモリモジュール |
CN114385089B (zh) * | 2022-03-22 | 2022-08-05 | 北京清微智能信息技术有限公司 | 一种基于交叉编址的动态bank存储方法、装置及电子设备 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108745A (en) * | 1997-10-31 | 2000-08-22 | Hewlett-Packard Company | Fast and compact address bit routing scheme that supports various DRAM bank sizes and multiple interleaving schemes |
US6330647B1 (en) * | 1999-08-31 | 2001-12-11 | Micron Technology, Inc. | Memory bandwidth allocation based on access count priority scheme |
US7249241B1 (en) * | 2004-04-29 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for direct virtual memory address caching |
US7266670B2 (en) * | 2004-06-04 | 2007-09-04 | Faraday Technology Corp. | Method of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer |
US7543102B2 (en) * | 2005-04-18 | 2009-06-02 | University Of Maryland | System and method for performing multi-rank command scheduling in DDR SDRAM memory systems |
CN100382048C (zh) * | 2005-11-08 | 2008-04-16 | 中兴通讯股份有限公司 | 一种内存管理方法 |
JP2007183816A (ja) * | 2006-01-06 | 2007-07-19 | Elpida Memory Inc | メモリ制御装置 |
US8037332B2 (en) * | 2008-04-30 | 2011-10-11 | International Business Machines Corporation | Quad-state power-saving virtual storage controller |
US8819359B2 (en) * | 2009-06-29 | 2014-08-26 | Oracle America, Inc. | Hybrid interleaving in memory modules by interleaving physical addresses for a page across ranks in a memory module |
US8484418B2 (en) * | 2010-10-22 | 2013-07-09 | Intel Corporation | Methods and apparatuses for idle-prioritized memory ranks |
KR20130078455A (ko) * | 2011-12-30 | 2013-07-10 | 삼성전자주식회사 | 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법 |
US9311228B2 (en) * | 2012-04-04 | 2016-04-12 | International Business Machines Corporation | Power reduction in server memory system |
CN102681946B (zh) * | 2012-05-11 | 2015-03-11 | 龙芯中科技术有限公司 | 内存访问方法和装置 |
CN102880552B (zh) * | 2012-07-31 | 2015-01-14 | 中国人民解放军国防科学技术大学 | 面向多核多线程处理器的混合地址映射方法 |
CN103559137B (zh) * | 2013-07-12 | 2016-08-10 | 三星电子株式会社 | 一种内存分配方法及装置 |
US9959060B1 (en) * | 2014-09-16 | 2018-05-01 | SK Hynix Inc. | Data separation during host write with storage allocated based on traffic profiles |
US9804920B2 (en) * | 2014-11-20 | 2017-10-31 | Samsung Electronics Co., Ltd. | Rank and page remapping logic in a volatile memory |
KR102464801B1 (ko) * | 2015-04-14 | 2022-11-07 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
CN105068940B (zh) * | 2015-07-28 | 2018-07-31 | 北京工业大学 | 一种基于Bank划分的自适应页策略确定方法 |
US10403333B2 (en) * | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller with flexible address decoding |
-
2016
- 2016-11-23 WO PCT/CN2016/106987 patent/WO2018094620A1/zh unknown
- 2016-11-23 EP EP16922519.0A patent/EP3534264B1/en active Active
- 2016-11-23 CN CN201680058809.7A patent/CN108604206B/zh active Active
-
2019
- 2019-05-22 US US16/419,260 patent/US11232031B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN108604206A (zh) | 2018-09-28 |
EP3534264A4 (en) | 2019-11-06 |
EP3534264A1 (en) | 2019-09-04 |
US20190272230A1 (en) | 2019-09-05 |
US11232031B2 (en) | 2022-01-25 |
WO2018094620A1 (zh) | 2018-05-31 |
EP3534264B1 (en) | 2024-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387081B2 (en) | System and method for processing and arbitrating submission and completion queues | |
US11669269B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10102119B2 (en) | Garbage collection based on queued and/or selected write commands | |
WO2018175064A1 (en) | System and method for processing and arbitrating submission and completion queues | |
CN108231109B (zh) | 动态随机存取存储器dram的刷新方法、设备以及*** | |
CN108604206B (zh) | 一种内存分配方法和设备 | |
US20100070688A1 (en) | Flash memory device and method for writing data thereto | |
US20170046272A1 (en) | Logical memory address regions | |
US11983403B2 (en) | Data relocation in memory | |
EP2612251A1 (en) | Load balancing scheme in multiple channel dram systems | |
CN111651371A (zh) | 非对称型平面管理方法以及数据存储装置及其控制器 | |
CN116235153A (zh) | 用于高效存储器内处理***的硬件软件协作地址映射方案 | |
CN112988080B (zh) | 多数据页同时写入方法、3d闪存装置及计算机存储介质 | |
KR20180105265A (ko) | 고체 상태 디바이스를 위한 다중 어드레스 레지스터를 위한 장치 및 방법 | |
US20230274774A1 (en) | Effective DRAM Interleaving For Asymmetric Size Channels Or Ranks While Supporting Improved Partial Array Self-Refresh | |
CN112230843A (zh) | 限制热-冷交换磨损均衡 | |
CN113253939B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN102591816A (zh) | 一种多通道Nandflash存储*** | |
CN116414725A (zh) | 用于计算装置主存储器的分区命名空间 | |
US11086804B2 (en) | Storage system and method for reducing read-retry duration | |
US11960735B2 (en) | Memory channel controller operation based on data types | |
TW202213103A (zh) | 非對稱型平面管理方法以及資料儲存裝置及其控制器 | |
EP4120087B1 (en) | Systems, methods, and devices for utilization aware memory allocation | |
CN117008824A (zh) | 用于异构存储器的***和方法 | |
CN113867642A (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 |