内存访问方法和装置的制作方法

文档序号:6369419阅读:156来源:国知局
专利名称:内存访问方法和装置的制作方法
技术领域
本发明涉及计算机领域,具体而言,涉及ー种内存访问方法和装置。
背景技术
在现有的计算机系统中,内存系统的性能对处理器性能起着举足轻重的作用。内存系统主要由内存控制器和内存芯片组成。内存控制器与内存芯片之间的接ロ主要由控制总线和数据总线组成。控制总线主要包括控制命令和地址信息。为了获得较高的访存带宽(带宽是指在単位时间内,内存系统提供给处理器的数据量,通常以字节为单位),内存控制器与内存芯片之间的数据总线一般比较宽,通常为64位。现有的内存颗粒通常采用Rank的组织形式,每个内存控制器可以连接多个Rank,每个Rank由多个内存颗粒组成。图I为现有的内存系统的结构示意图,在图I中,每个颗粒提供宽度为16位(简写为类型xl6)的数据总线,则ー个64位的Rank需要由4个xl6的内存颗粒组成。每个内存颗粒由多个Bank组成。具体来说,以DDR3 SDRAM为例,每个内存颗粒固定由8个Bank组成。每个Bank由多个行(也称为页)和ー个行缓冲组成。当内存控制器需要对某一行数据进行读取或者写入操作时,内存颗粒首先需要将该行的数据搬入行缓冲,然后在行缓冲中对该行数据进行读取或者写入操作。对数据的读取或者写入操作完成以后,需要将行缓冲中的数据搬运回原来的位置。内存控制器通常通过三类内存命令控制内存芯片打开页操作,关闭页操作和读写数据操作。对于ー个访存请求,如果该访存请求需要访问的数据已经在行缓冲中,则称该访存请求“页命中”。否则,称该访存请求“页冲突”。当发生页命中时,内存控制器可以直接在行缓冲中进行读写数据操作。当发生页冲突吋,内存控制器需要首先将行缓冲中的行搬回原来的位置(关闭页),然后将需要访问的页搬到行缓冲中(打开页),然后在行缓冲中进行数据的读写操作。因此,页冲突的访存请求需要比页命中的访存请求消耗更多的时间。现有的内存控制器通常采用图I所示的方式,以Rank为单位进行内存访问。为了得到64位数据总线,内存控制器需要同时操作ー个Rank上的所有颗粒,在内存访问过程中,可能多个功能単元会同时访问内存系统,不同的功能単元访问不同的页。这种情况下内存颗粒需要频繁的执行页打开和页关闭操作,造成严重的页冲突,从而使内存系统性能低下。图2为现有技术中内存颗粒控制的ー种示例,(在图2中,Rank由4个颗粒组成,在实际的系统,每个Rank可能由不同数目的内存颗粒组成)。由于内存控制器同时操作所有的内存颗粒,所有的内存颗粒都处于相同的状态。当一个访存请求在一个颗粒上发生页冲突时,该访存请求也必然在其它颗粒上发生页冲突。同时由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作,消耗了大量的功耗,影响内存系统的性能。针对相关技术中在进行内存访问的过程中由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作而造成功耗大的问题,目前尚未提出有效的、解决方案。

发明内容
本发明提供了ー种内存访问方法和装置,以解决相关技术中在进行内存访问的过程中由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作而造成功耗大的问题。根据本发明的ー个方面,提供了ー种内存访问方法,该方法包括接收访问请求,访问请求为访问内存的请求;根据访问请求以颗粒组为单位访问内存,其中,颗粒组通过将内存颗粒分组得到,每个颗粒组包含ー个或多个内存颗粒。优选的,根据访问请求以颗粒组为单位访问内存的步骤包括获取访问请求中携带的内存地址信息,其中,内存地址信息包含颗粒地址,颗粒地址用于指向所需访问的颗粒组;内存地址信息内存地址信息根据颗粒地址查询对应的颗粒组;以查询到的颗粒组为单 位进行访问操作。优选的,以查询到的颗粒组为单位进行访问操作的步骤包括将访问请求发送至与颗粒地址对应的命令队列中;读取并执行命令队列中存储的访问请求所指示的访问操作。优选的,动态配置颗粒组中所包含的内存颗粒的数目。优选的,通过配置寄存器组动态配置颗粒组中所包含的内存颗粒的数目,其中,配置寄存器组由若干配置寄存器组成,配置寄存器中包含如下信息内存颗粒编号、颗粒组编号和当前颗粒组中所包含的所有内存颗粒编号。优选的,访问操作包括读取操作和写入操作。根据本发明的另一方面,提供了ー种内存访问装置,该装置包括接收单元,用于接收访问请求,访问请求为访问内存的请求;访问单元,用于根据访问请求以颗粒组为单位访问内存,其中,颗粒组通过将内存颗粒分组得到,每个颗粒组包含ー个或多个内存颗粒。优选的,访问单元包括获取模块,用于获取访问请求中携帯的内存地址信息,其中,内存地址信息包含颗粒地址,颗粒地址用于指向所需访问的颗粒组;查询模块,根据颗粒地址查询对应的颗粒组;访问模块,用于以查询到的颗粒组为单位访问内存。优选的,访问模块包括发送子模块,用于将访问请求发送至与颗粒地址对应的命令队列中并存储;执行子模块,用于读取并执行命令队列中存储的访问请求所指示的访问操作。优选的,该装置还包括配置単元,用于通过配置寄存器组配置颗粒组所包含的内存颗粒的数量,其中,配置寄存器组由若干配置寄存器组成,配置寄存器中包含如下信息内存颗粒编号、颗粒组编号和当前颗粒组中所包含的所有内存颗粒。在本发明中,以颗粒组的形式重新组织颗粒,每个颗粒组可以有一个或多个的内存颗粒,这样内存控制器可以单独操作每个内存颗粒组。由于每个内存命令只操作ー个颗粒组,使得每个颗粒组处于不同的状态。当一个访存请求在一个颗粒组上发生页冲突吋,内存控制器只对该颗粒组进行页打开和页关闭操作,从而起到节省功耗的目的。此外,ー个Rank划分为多个颗粒组,每个颗粒组的Bank打开不同的页,可以有效的减少页冲突,解决了相关技术中在进行内存访问的过程中由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作而造成功耗大的问题,达到减小内存功耗的效果,进ー步地,提升了内存系统的性能。


此处所说明的附图用来提供对本发明的进ー步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是根据相关技术的内存系统的一种结构示意图;图2是根据相关技术中内存颗粒控制的ー种示意图;图3是根据本发明实施例的内存访问方法的一种优选的流程图;图4是根据本发明实施例的ー种颗粒组的优选的示意图;
图5是传统的地址划分形式的示意图;图6是根据本发明实施例的地址划分形式的示意图;图7是根据本发明实施例的另ー种颗粒组的优选的示意图;图8是根据本发明实施例的另ー种颗粒组的优选的示意图;图9是根据本发明实施例的内存访问装置的一种优选的结构示意图;图10是根据本发明实施例的内存访问装置的另ー种优选的结构示意图;以及图11是根据本发明实施例的内存访问装置的又一种优选的结构示意图。
具体实施例方式下文中将參考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互組合。实施例I本发明提供了ー种内存访问方法,具体来说,如图3所示,该方法包括S302,接收访问请求,访问请求为访问内存的请求;优选的,当需要对某一行数据进行访问(如,读取某一行数据或者写入数据)时,向内存控制器发出请求访问内存的访问请求。S304,根据访问请求以颗粒组为单位访问内存,其中,颗粒组通过将内存颗粒分组得到,每个颗粒组包含ー个或多个内存颗粒。优选的,将内存颗粒分为若干个颗粒组,每个颗粒组包括ー个或多个的内存颗粒。具体来说,图4示出一种将内存颗粒分组后得到的内存组的ー种示意图,在图4中,ー个Rank由4个内存颗粒组成,对应编号为内存颗粒O、内存颗粒I、内存颗粒2和内存颗粒3,每两个颗粒组成ー个颗粒组,这两个颗粒组的编号依次为a,b,它们对应的内存颗粒编号依次为(0,1),(2,3)。为了使内存控制器可以单独控制每个内存颗粒组。本发明为每个颗粒组提供了专门的控制线路。当MR的值(MR的值为该访存请求要访问的颗粒组编号)为I吋,内存颗粒I所在的颗粒组为颗粒组a,因而访存请求对颗粒组a进行读取或者写入操作。通过这种形式,本发明达到了划分不同颗粒组,井分别控制这些颗粒组的目的。在上述优选的实施方式中,以颗粒组的形式重新组织颗粒,每个颗粒组可以有一个或多个的内存颗粒,这样内存控制器可以单独操作每个内存颗粒组。由于每个内存命令只操作ー个颗粒组,使得每个颗粒组处于不同的状态。当一个访存请求在一个颗粒组上发生页冲突吋,内存控制器只对该颗粒组进行页打开和页关闭操作,从而起到节省功耗的目的。此外,ー个Rank划分为多个颗粒组,每个颗粒组的Bank打开不同的页,可以有效的减少页冲突,解决了相关技术中在进行内存访问的过程中由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作而造成功耗大的问题,达到减小内存功耗的效果,进一歩地,提升了内存系统的性能。本实施例中还提供了一种根据访问请求以颗粒组为单位访问内存的优选的方案,具体来说,该方案包括如下步骤获取访问请求中携帯的内存地址信息,其中,内存地址信息包含颗粒地址,颗粒地址用于指向所需访问的颗粒组;根据颗粒地址查询对应的颗粒组;以查询到的颗粒组为单位进行访问操作。具体来说,在接收到内存访问请求后,首先获取访问请求中携帯的内存地址信息,传统的地址划分形式如图5所示,内存地址可以分为CS (Chip Select,用于选择Rank),R0ff(行地址,用于选择行),BA (Bank地址,用于选择Bank),COL (列地址,用于选择列)。按照这种地址划分方式,访存请求以Rank为单位访问内存。本发明提出了ー种新型的管理方式。如图6所示,内存地址可以划分为CS(ChipSelect,用于选择Rank), MR (颗粒地址,用于选择颗粒组),ROW (行地址,用于选择行),BA (Bank地址,用于选择Bank),COL (列地址,用于选择列)。其中,MR的值为该访存请求要访问的颗粒组编号。根据MR的值来确定所需访问的内存地址所在的颗粒组,以颗粒组为单位进行内存访问。下面举例进行具体的说明假设Addr代表访存地址,原有的地址映射机制需要将访存地址由高到低依次翻译为Rank地址,行地址,Bank地址,列地址和字节地址组成。例如,对于ー个64位内存芯片,取其Rank地址有两位,行地址为14位,Bank地址为3位,列地址为10位。则Addr[2:0]为字节地址,Addr [12:3]为列地址,Addr [15:13]为Bank地址,Addr [29:16]为行地址,Addr [31:30]为 Rank 地址。在本发明中,需要新的地址位区分组成Rank的各个颗粒。例如,对于ー个64位内存芯片,取其Rank地址有两位,行地址为14位,Bank地址为3位,列地址为10位。如果将其分为四个通道,则Addr [O]为字节地址,Addr[10:1]为列地址,Addr[13:ll]为Bank地址,Addr [27:14]为行地址,Addr [29:28]为颗粒地址,Addr [31:30]为Rank地址。内存控制器根据颗粒地址,将访存请求发往相应的命令队列。命令队列负责存储对应颗粒的访存请求。本发明还对上述方法进行了优化,提出了ー种以查询到的颗粒组为单位进行访问操作的优选的方案,具体地,该方案包括如下步骤将访问请求发送至与颗粒地址对应的命令队列中;读取并执行命令队列中存储的访问请求所指示的访问操作。具体来说,内存控制器根据访问请求中携帯的内存地址信息获取所需访问的内存颗粒地址,将访问请求发送至与颗粒地址对应的命令队列,命令队列负责存储对应颗粒的访问请求。下面以单个内存颗 粒为ー组颗粒组的情况举例说明命令发送和数据传输过程。命令发送原有的内存控制器单独控制每个Rank,而本发明中内存控制器必须增加对每个颗粒控制线,为内存控制器设计单独控制组成Rank的每个颗粒。此外,内存控制器为姆个颗粒增加了单独的状态机(Status Machine,SM)。跟原有的Rank状态机ー样,颗粒状态机记录内存颗粒的控制信息,对内存颗粒发送相应的内存命令。数据传输每个颗粒可以同时分别向内存控制器传输数据,这些数据分别对应不同的访存请求。颗粒状态机控制数据的接收和发送。对于读访存请求,颗粒状态机将内存颗粒传回的数据送往对应的命令队列,命令队列负责将该数据返回到内存接ロ。对于写访存请求,颗粒状态机将写数据送往内存颗粒。在本发明中,每个颗粒组中的内存颗粒数目可以相同,也可以不同。具体地,如图7所示,ー个Rank由4个颗粒组成,颗粒O和颗粒I组成ー个颗粒组,颗粒2和颗粒3分别组成ー个颗粒组。为了使内存控制器可以单独控制每个内存颗粒组,本发明为每个颗粒组提供了专门的控制线路。这三个颗粒组的编号依次为a,b,c,它们对应的内存颗粒编号依次为(0,1),2,3。按照技术方案I提出的颗粒组地址划分形式,当MR的值为O或者I吋,访存请求对颗粒组a进行读取或者写入操作。当MR的值分别为2或者3吋,访存请求分别对颗粒组b和颗粒组c进行读写或者写入操作。通过这种形式,本发明达到了划分不同颗粒组,每个颗粒组中颗粒数目不同,井分别控制这些颗粒组的目的。在实际应用中,应用程序的访存带宽需求不同。带宽需求较高的应用程序可以使用由多个内存颗粒组成的颗粒组,带宽需求较低的应用程序可以使用由较少颗粒组成的颗粒组。
本发明还对上述方法进行了进ー步的优化,以达到动态配置颗粒组所包含的内存颗粒的数量的目的,为了达到上述目的,具体地,通过配置寄存器组配置颗粒组所包含的内存颗粒的数量,其中,配置寄存器组由若干配置寄存器组成,配置寄存器中包含如下信息内存颗粒编号、颗粒组编号和当前颗粒组中所包含的所有内存颗粒编号。下面结合具体示例进行进一步说明图8示出ー种内存颗粒组织,由4个颗粒组成,假设图8中有4个颗粒组,每个颗粒组中有ー个颗粒,每个内存颗粒都有专用的控制路线。优选的,在内存控制器中増加配置寄存器组,该寄存器组由多个配置寄存器组成,如表一所示表一
颗粒编号颗粒组编号颗粒组中所有颗粒编号每个寄存器由三部分组成颗粒编号,该颗粒对应的颗粒组编号,该颗粒组中所有颗粒编号。在内存访问过程中,内存控制器根据MR的值查询该配置寄存器,根据MR的值获知该访存请求需要访问的颗粒组编号和颗粒组中所有颗粒编号,访存请求访问该颗粒组中所有颗粒。表ニ,表三和表四分别举例介绍了图4,图7和图8中颗粒编号与颗粒组编号对应关系的设置值。表ニ,表三和表四如下表ニ
颗粒编号颗粒组编号颗粒组中所有颗粒编号
Oa0,I
Ia0,I■
2b2,3■
权利要求
1.ー种内存访问方法,其特征在于,包括 接收访问请求,所述访问请求为访问内存的请求; 根据所述访问请求以颗粒组为单位访问内存,其中,所述颗粒组通过将内存颗粒分组得到,每个颗粒组包含ー个或多个内存颗粒。
2.根据权利要求I所述的方法,其特征在于,根据所述访问请求以颗粒组为单位访问内存的步骤包括 获取访问请求中携帯的内存地址信息,其中,所述内存地址信息包含颗粒地址,所述颗粒地址用于指向所需访问的颗粒组; 根据所述颗粒地址查询对应的颗粒组; 以查询到的颗粒组为单位进行访问操作。
3.根据权利要求2所述的方法,其特征在干,以查询到的颗粒组为单位进行访问操作的步骤包括 将所述访问请求发送至与所述颗粒地址对应的命令队列中; 读取并执行所述命令队列中存储的访问请求所指示的访问操作。
4.根据权利要求I所述的方法,其特征在于,动态配置所述颗粒组中所包含的内存颗粒的数目。
5.根据权利要求4所述的方法,其特征在于,通过配置寄存器组动态配置所述颗粒组中所包含的内存颗粒的数目,其中,所述配置寄存器组由若干配置寄存器组成,所述配置寄存器中包含如下信息内存颗粒编号、颗粒组编号和当前颗粒组中所包含的所有内存颗粒编号。
6.根据权利要求2或3所述的方法,其特征在于,所述访问操作包括读取操作和写入操作。
7.—种内存访问装置,其特征在于,包括 接收单元,用于接收访问请求,所述访问请求为访问内存的请求; 访问单元,用于根据所述访问请求以颗粒组为单位访问内存,其中,所述颗粒组通过将内存颗粒分组得到,每个颗粒组包含ー个或多个内存颗粒。
8.根据权利要求7所述的装置,其特征在于,所述访问単元包括 获取模块,用于获取访问请求中携帯的内存地址信息,其中,所述内存地址信息包含颗粒地址,所述颗粒地址用于指向所需访问的颗粒组; 查询模块,用于根据所述颗粒地址查询对应的颗粒组; 访问模块,用于以查询到的颗粒组为单位访问内存。
9.根据权利要求8所述的装置,其特征在于,所述访问模块包括 发送子模块,用于将所述访问请求发送至与所述颗粒地址对应的命令队列中并存储; 执行子模块,用于执行所述命令队列中存储的访问请求所指示的访问操作。
10.根据权利要求7所述的装置,其特征在于,还包括 配置単元,用于通过配置寄存器组配置所述颗粒组所包含的内存颗粒的数量,其中,所述配置寄存器组由若干配置寄存器组成,所述配置寄存器中包含如下信息内存颗粒编号、颗粒组编号和当前颗粒组中所包含的所有内存颗粒。
全文摘要
本发明公开了一种内存访问方法和装置,其中,该方法包括接收访问请求,访问请求为访问内存的请求;根据访问请求以颗粒组为单位访问内存,其中,颗粒组通过将内存颗粒分组得到,每个颗粒组包含一个或多个内存颗粒。本发明解决了相关技术中在进行内存访问的过程中由于发生页冲突时,同一个Rank上的所有内存颗粒都需要进行页打开和页关闭操作而造成功耗大的问题,达到减小内存功耗的效果,进一步地,提升了内存系统的性能。
文档编号G06F12/06GK102681946SQ20121014675
公开日2012年9月19日 申请日期2012年5月11日 优先权日2012年5月11日
发明者张广飞, 王焕东, 陈新科, 黄帅 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1