内存访问处理方法、装置及系统的制作方法

文档序号:6507091阅读:165来源:国知局
内存访问处理方法、装置及系统的制作方法
【专利摘要】本发明提供内存访问处理方法、装置及系统,该方法包括:接收处理器发送的访存请求;将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型及由内存地址对应的编码位组成编码位向量,在编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;将新访存请求发送给内存控制器,以使内存控制器对与第一编码位标识对应的内存地址执行访存操作。本发明可将处理器发送的多个访存请求合并成一个访存请求并统一发送给内存控制器以执行访存操作,有效提高内存带宽使用率。
【专利说明】内存访问处理方法、装置及系统

【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种内存访问处理方法、装置及系统。

【背景技术】
[0002]计算机处理器运行过程中,处理器从片外内存获取数据的速度直接影响到处理器的效率。
[0003]由于片外内存的读写速度相比处理器的数据处理速度要小的多,因此,为减小处理器读取数据的时延,现有技术中利用程序的时间局部性和空间局部性而采用缓存技术(Cache),即在处理器片上设置高速缓存,用以缓存处理器常用的数据,该缓存的数据读写速度比较快,当处理器读取数据时首先访问缓存,当访问的数据不在缓存中时再通过内存控制器访问片外内存,通过缓存可有效提高处理器的工作效率。为便于数据管理,缓存中的数据以缓存块,如64字节(Byte)等,为粒度进行管理的,在缓存与片外内存之间进行数据读写时,也是以缓存块为粒度进行一次性读入片内缓存中。
[0004]然而上述处理器进行数据读写时,对于数据局部性较差的应用程序,处理器需要反复通过内存控制器访问片外内存,访存带宽浪费较大;而且对于多核处理器中,当存在大量访存操作并发到内存控制器时,由于内存控制器同时接收并处理的访存请求数目有限,使得一些访存请求被堵塞在内存控制器中而不能被及时高效处理。


【发明内容】

[0005]本发明实施例提供一种内存访问处理方法、装置及系统,能够提高访存请求处理的及时性,且能够提高内存控制器的带宽有效利用率。
[0006]本发明实施例的第一个方面是提供一种内存访问处理方法,包括:
[0007]接收处理器发送的访存请求;
[0008]将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;
[0009]将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求与所述第一编码位标识对应的内存地址执行访存操作。
[0010]结合第一个方面的内存访问处理方法,在第一种实现方式中,所述将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括被合并的访存请求所访存的内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,包括:
[0011]将在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中;所述地址索引表的每一行包括访存请求类型、访存请求所访存内存地址的基地址、访存粒度和编码位向量,组成每一行的编码位向量的所有编码位对应的内存地址具有相同的基地址;
[0012]提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求。
[0013]结合第一个方面的内存访问处理方法的第一种实现方式,在第二种实现方式中,若所述新访存请求的访存请求类型为读访存操作,则将所述新访存请求发送给内存控制器之后,还包括:
[0014]将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中;
[0015]将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0016]结合第一个方面的内存访问处理方法的第一种实现方式或第二种实现方式,在第三种实现方式中,若所述新访存请求的访存请求类型为写访存操作,则将所述新访存请求发送给内存控制器之后,还包括:
[0017]将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址;
[0018]将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0019]结合第一个方面的内存访问处理方法的第一种实现方式、第二种实现方式或第三种实现方式,在第四种实现方式中,若内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A -1og2 (N*L))位。
[0020]本发明实施例的第二个方面是提供一种内存访问处理方法,包括:
[0021]接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;
[0022]根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0023]结合第二个方面的内存访问处理方法,在第一种实现方式中,所述新访存请求为在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成的,则所述根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,包括:
[0024]获取所述新访存请求中被合并的访存请求的所述基地址、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息;
[0025]若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O至N-l。
[0026]结合第二个方面的内存访问处理方法的第一种实现方式,在第二种实现方式中,若所述新访存请求的访存请求类型为读访存操作,则所述对解析得到的片外内存中对应的内存地址执行访存操作,包括:
[0027]读取解析获取的被访存的内存地址中的数据;
[0028]返回读取的数据。
[0029]结合第二个方面的内存访问处理方法的第一种实现方式,在第三种实现方式中,若所述新访存请求的访存请求类型为写访存操作,则所述对解析得到的片外内存中对应的内存地址执行访存操作,包括:
[0030]获取写访存操作的数据;
[0031]将所述写访存操作的数据写入解析获取的被访存的内存地址。
[0032]本发明实施例的第三个方面是提供一种内存访问处理装置,包括:
[0033]获取单元,用于接收处理器发送的访存请求;
[0034]合并单元,用于将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;
[0035]发送单元,用于将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对与所述第一编码位标识对应的内存地址执行访存操作。
[0036]结合第三个方面的内存访问处理装置,在第一种实现方式中,所述合并单元,具体用于将在一个预置时间段内接收的访存请求类型相同、访存请求所访存的内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索弓I表的同一行中;所述地址索弓I表的每一行包括访存请求类型、访存请求对应内存地址的基地址、访存粒度和编码位向量,组成每一行的编码位向量的所有编码位对应的内存地址具有相同的基地址;提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求。
[0037]结合第三个方面的内存访问处理装置的第一种实现方式中,在第二种实现方式中,若所述新访存请求的访存请求类型为读访存操作,所述装置还包括:
[0038]写数据单元,用于将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中;
[0039]第一更新单元,用于将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0040]结合第三个方面的内存访问处理装置的第一种实现方式中或第二种实现方式中,在第三种实现方式中,若所述新访存请求的访存请求类型为写访存操作,所述装置还包括:
[0041]读数据单元,用于将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址;
[0042]第二更新单元,用于将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0043]结合第三个方面的内存访问处理装置的第一种实现方式、第二种实现方式或第三种实现方式,在第四种实现方式中,若内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A -1og2 (N*L))位。
[0044]本发明实施例的第四个方面是提供一种内存控制器,包括:
[0045]第二获取单元,用于接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;
[0046]访存单元,用于根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0047]结合第四个方面的内存控制器,在第一种实现方式中,若所述新访存请求为在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成的,则所述访存单元具体用于获取所述新访存请求中被合并的访存请求的所述基地址、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息;若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O至N-1 ;以及对获得所述被合并的访存请求所访存的内存地址执行访存操作。
[0048]结合第四个方面的内存控制器或者内存控制器的第一种实现方式,在第二种实现方式中,若所述新访存请求的访存请求类型为读访存操作,则所述访存单元具体用于读取解析获取的被访存的内存地址中的数据;返回读取的数据。
[0049]结合第四个方面的内存控制器或者内存控制器的第一种实现方式,在第三种实现方式中,若所述新访存请求的访存请求类型为写访存操作,则所述访存单元具体用于获取写访存操作的数据;将所述写访存操作的数据写入解析获取的被访存的内存地址。
[0050]本发明实施例的第五个方面是提供一种内存访问系统,包括:至少一个处理器和片外内存,其特征在于,还包括:内存访问处理装置和内存控制器,
[0051]所述内存访问处理装置,用于将在一个预置时间段内接收的所述处理器发送的多个访存请求进行合并形成新访存请求,所述新访存请求包括被合并的访存请求所访存的内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;并将所述新访存请求发送给内存控制器;
[0052]所述内存控制器,用于接收所述新访存请求;并根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0053]本发明实施例通过将预置时间段内的多个访存请求合并成一个新访存请求,使得访存过程中带宽利用率较低的多个的访存请求合并成对应于带宽利用率高的一个新访存请求以统一对内存控制器执行访问操作,降低了向内存控制器发送访存请求的数量,有利于提高内存的带宽利用率,而且还保证了内存控制器对处理器的访存请求进行及时处理。在将多个访存请求合并获得新访存请求时,为每个被合并的访存请求所访存的内存地址配置对应的第一编码位标识,使得内存控制器根据新访存请求进行访存时,能够根据第一编码位标识准确地对相应的内存地址执行访存操作,实现处理器与片外内存之间数据的有效交换,从而本发明实施例不仅提高了处理器的访存请求处理的及时性,而且还有效提高了一次访问内存控制器时带宽的有效利用率访存过程中内存带宽的有效利用率。

【专利附图】

【附图说明】
[0054]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0055]图1为本发明内存访问处理方法实施例一的流程图;
[0056]图2为本发明内存访问处理方法实施例二的流程图;
[0057]图3为本发明实施例中地址索引表的结构示意图;
[0058]图4为本发明内存访问处理方法实施例三的流程图;
[0059]图5为本发明内存访问处理装置实施例一的结构示意图;
[0060]图6为本发明内存访问处理装置实施例二的结构示意图;
[0061]图7为本发明内存访问处理装置实施例三的结构示意图;
[0062]图8为本发明内存控制器实施例的结构示意图;
[0063]图9为本发明内存访问系统实施例一的结构示意图;
[0064]图10为本发明实际应用中内存访问系统实施例二的结构示意图;
[0065]图11为内存访问处理装置的地址索引表中读访存请求合并结果示意图;
[0066]图12A为图11中合并的新访存请求的访存过程示意图;
[0067]图12B为图11中合并的新访存请求访存后数据回填过程的示意图;
[0068]图12C为图11中合并的新访存请求访存后数据回写完毕的状态示意图;
[0069]图13内存访问处理装置的地址索引表中写访存请求合并结果示意图;
[0070]图14为图13中合并的新访存请求的访存过程示意图。

【具体实施方式】
[0071]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0072]图1为本发明内存访问处理方法实施例一的流程图,如图1所示,本实施例的方法以设置在处理器和内存控制器之间的内存访问处理装置为执行主体,本实施例的方法包括:
[0073]步骤101、接收处理器发送的访存请求。
[0074]计算机处理器,如中央处理单元(CPU)运行过程中,当与片外内存发生数据交换时,会向设置在处理器和片外内存之间的内存控制器发送访存请求,内存控制器根据读指令将片外内存中的数据读入片上缓存,或者根据写指令将片上缓存中的数据写入片外内存。这里的访存指的是处理器向片外内存的内存地址中读数据或写数据的操作,从而处理器发送的访存请求的类型可以为读访存请求或写访存请求。由于处理器发出的读请求或写请求的数据存在不同粒度大小,而且这些不同粒度数据的读请求或写请求是随机出现的,若读请求或写请求的数据粒度满足片上缓存的缓存块的大小,则需要执行一次访存请求即可,后续处理器可直接与片上缓存进行交换访存请求的数据;若读请求或写请求的数据粒度小于缓存块的大小,则由于访存操作的数据粒度不满足片上缓存的缓存块的大小,因此,处理器每次发出访存请求,都需要通过内存控制器与片外内存交换访存请求的数据,这使得内存控制器频繁地执行访存操作,因此不利于内存控制器带宽的有效利用率的提高,而且还使一些访存请求堵塞在内存控制器中而不能被及时处理。本发明实施例中,处理器与内存控制器之间设置的内存访问处理装置可以获取处理器发送的访存请求,并可以采用下面的处理方式对处理器发送的各种粒度的访存请求进行合并处理,以提高内存控制器的带宽利用率,缓解访存请求在内存控制器中堵塞的问题。
[0075]步骤102、将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存的内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识。
[0076]目前,内存控制器利用有限的引脚分别与处理器和片外内存通信,因此,内存控制器同时接收处理的访存请求是有限的,而数据粒度不满足片上缓存的缓存块大小的访存请求每次都需要内存控制器对片外内存执行访存操作,因此,在内存控制器有限的引脚的前提下,当处理器发送大量的粒度较小的访存请求或者多核处理器并发大量的访存请求给内存控制器时,由于每个访存请求的访存操作都会占用一定的访存带宽,使得一些访存请求会被堵塞在内存控制器中而得不到及时处理。为使处理器发送的访存请求能够及时被内存控制器接收处理,本发明实施例中,在处理器与内存控制器之间设置的内存访问处理装置将一段时间内,即一个预置时间段内接收的多个访存请求进行合并成一个新访存请求,且所述新访存请求包括包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,其中,在编码位向量中对应编码位映射的内存地址,包括被合并访存请求所访存的内存地址,还可能包括没有被访存到的内存地址,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识。也就是说,内存访问处理装置能够将需要多次发送给内存控制器的多个访存请求通过合并成一个较大粒度的访存请求一次发送给内存控制器,实现了处理器多个访存请求的快速处理,从而可缓解内存控制器引脚数目的限制问题,使得执行一次对内存控制器的访问操作就能够完成多个访存请求分别对内存控制器的访问操作,提高内存控制器的带宽利用率,保证了处理器的各个访存请求都能够及时处理,从而有利于处理器的性能发挥。
[0077]其中,新访存请求中的访存请求类型可以为读访存操作或者写访存操作;基地址(Base_Addr )为一个内存地址,该地址是某块内存空间的首地址,通过基地址加上块内偏移地址,可以获得该块内存空间内的所有地址;访存粒度为处理器发出的访存请求所访存的数据大小,其可以为各种粒度大小的访存请求,如8Byte, 16Byte等。
[0078]为使合成的新访存请求与被合并的多个访存请求对应,并且新访存请求被处理时能够准确访存到被合并的多个访存请求对应内存地址的数据,本发明实施例中在合并获得新访存请求时,为每个被合并的访存请求所访存的内存地址配置对应的表示有访存操作的第一编码位标识,从而当内存控制器根据新访存请求进行访存时,能够根据新访存请求的编码位向量中携带的第一编码位标识确定对应的内存地址有访存操作,从而对相应的内存地址执行访存操作。
[0079]本发明实施例通过在新访存请求的编码位向量中为被合并的访存请求的所访存的内存地址配置对应第一编码位标识的方式,以使内存控制器能够正确解析出处理器多个要访存的内存地址,这些内存地址可以是非连续的,并且被合并的访存请求的内存地址范围不受片内Cache缓存块大小的限制,因此本发明实施例的方法还可以支持非规则跳跃式的内存访问,提高了内存地址配置的灵活性。相比现有的Cache中,所有的数据写入、替换和去除,都是以缓存块(Cache Line)为单位进行操作,若缓存块设置不合理,就会导致粒度较小的访存不能得到及时处理。本发明实施例中对处理器发送的访存请求的访存粒度没有任何限制,具体应用中,内存访问处理装置可将多个访存请求以相同粒度或者相同请求类型或者相同范围的访存地址进行归类合并形成较大的访存请求,统一发送给内存控制器执行访存操作,同时通过新访存请求的编码位向量中配置的各个编码位标识分别映射到被合并的多个访存请求的内存地址,使得在访存过程中,通过判断编码位标识可以确定被合并的访存请求的被处理情况,保证了处理器访存请求的准确执行。实际操作中可以将多个粒度较小的访存请求合并成一个较大的访存请求,使得只访问一次内存控制器即可实现多个访存请求对内存控制器的访存操作,有利于内存带宽的利用率,保证内存控制器及时处理处理器的访存请求,而且还提高了访存请求中内存地址配置的灵活性。
[0080]步骤103、将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对与所述第一编码位标识对应的内存地址执行访存操作。
[0081]内存访问处理装置将多个访存请求合并形成新访存请求后,可将新访存请求作为一个访存请求发送给内存控制器,避免了多个访存请求单独访问内存控制器而降低内存控制器处理访存请求的吞吐率,进而使内存带宽利用率较低的问题。
[0082]本发明实施例不仅能将处理器访存粒度较小的访存请求合并成较大粒度的访存请求,也能够将访存粒度较大的访存请求进行合并,对于粒度较大的访存请求,本发明实施例的方法可以将其合并成更大粒度的访存请求,同样通过对内存控制器的一次访问操作实现了处理器多个访存请求对内存控制器的多次访问操作。
[0083]本发明实施例通过将预置时间段内的多个访存请求合并成一个新访存请求,使得访存过程中带宽利用率较低的多个的访存请求合并成对应于带宽利用率高的一个新访存请求以统一对内存控制器执行访问操作,降低了对内存控制器发送访存请求数,有利于提高内存的带宽利用率,而且还保证了内存控制器对处理器的访存请求进行及时处理。在将多个访存请求合并获得新访存请求时,为每个被合并的访存请求所访存的内存地址配置对应的第一编码位标识,使得内存控制器根据新访存请求进行访存时,能够根据第一编码位标识准确地对相应的内存地址执行访存操作,实现处理器与片外内存之间数据的有效交换,从而本发明实施例不仅提高了处理器的访存请求的处理及时性,而且还有效提高了一次访问内存控制器时带宽的有效利用率。
[0084]图2为本发明内存访问处理方法实施例二的流程图,如图2所示,本实施例的方法包括:
[0085]步骤201、接收处理器发送的访存请求。
[0086]步骤202、将在一个预置时间段内接收的访存请求类型相同、访存请求所访存内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中。
[0087]步骤203、根据每个访存请求所访存的内存地址的基地址,在地址索引表每行的编码位向量中为该行被合并的访存请求所访存的内存地址对应的编码位配置表示有访存操作的第一编码位标识。
[0088]为使内存控制器能够快速解析处理内存访问处理装置收集到的访存请求所要访存的内存地址,同时也为简化内存访问处理装置的结构,本发明实施例将在一个预置时间段内,如20毫秒内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中,并在地址索引表中该行的编码位向量中为每个被合并的访存请求所访存的内存地址对应的编码位配置表示有访存操作的第一编码位标识。
[0089]本实施例中,在获取处理器发送的访存请求后,将访存请求的类型相同、基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中,后续内存访问处理装置可将收集在地址索引表的同一行中的多个访存请求合并成一个新访存请求,该新访存请求可对应于对内存控制器的一次访问,当内存控制器接收到新访存请求后,内存控制器根据新访存请求中配置的各个第一编码位标识分别执行被合并的各个访存请求的访存操作。由于处理器,尤其是多核处理器,同时并发的访存请求可能具有各种粒度大小,也可能既有读访存请求,也有写访存请求,还可能是处理器要访存不同基地址区域的数据,因此,当大量的访存请求按照具有相同访存粒度、相同访存请求类型以及相同基地址的访存请求进行合并处理后,将形成多个新访存请求,每个新访存请求对应一次对内存控制器的访问操作。当内存访问处理装置将某一行对应的新访存请求发送给内存控制器时,内存控制器可执行与该行被合并的访存请求对应访存操作。以下以地址索引表为一行为例进行说明。
[0090]图3为本发明实施例中地址索引表的结构示意图,如图3所示,该地址索引表中的访存请求类型可以为读访存操作或者写访存操作,分别以O和I表示,访存请求类型表示地址索引表中被合并的各个访存请求的访存请求类型均为读访存还是写访存,基地址为被合并的各个访存请求所访存的内存地址的基地址,访存粒度为被合并的各个访存请求所访存的数据大小,编码位向量中的每个编码位分别对应于内存空间的存储地址,通过对编码位向量中的编码位进行编码可实现对被合并的访存请求所访存的内存地址进行编码。
[0091]实际应用中,若在预定时间段内收到一个访存请求,该访存请求是对某一个内存地址进行访存,则将编码位向量中该内存地址对应的编码位标识为1,表明在该预定时间段内收集到的访存请求合并成的新访存请求中,该编码位对应的内存地址在该新访存请求对应的访存操作中将要被访存;否则,若在预定时间段内没有收集到对某个内存地址进行访存的访存请求时,则将编码位向量中该内存地址对应的编码位标识为0,表明在该预定时间段内收集到的访存请求合并成的新访存请求中,该编码位对应的内存地址在新访存请求对应的访存操作中将不被访存,因此,当合并成新访存请求后,内存控制器可以根据编码位向量中编码位的值是I还是O而能够确定与编码位对应的内存地址在访存操作中是否被访存。因此,地址索引表中编码位向量对应的是以基地址开始的一块地址空间,编码位向量中的每个编码位可以映射内存中大小为访存粒度的地址范围,编码位标识表示内存控制器在执行访存操作时该地址范围内的数据是否被访存,本发明实施例中以第一编码位标识表示编码位映射的内存地址有访存操作,而以第二编码位标识表示编码位映射的内存地址无访存操作。
[0092]当被合并的多个访存请求为访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同时,编码位向量中第i位所映射的内存地址为地址索引表的基地址的基础上,偏移“粒度*i”所对应的内存地址,即“基地址+粒度*i”,因此当内存控制器接收到新访存请求时可方便计算出被合并的处理器发送的各个访存请求所访存的内存地址。也就是说,内存访问处理装置采用上述方法进行编码可使内存控制器根据编码位与内存地址的对应关系确定处理器的访存请求所要访存数据的内存地址,从而准确执行访存操作。
[0093]本发明实施例中,若计算机系统的内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A -1og2(N*L))位,因此,当系统内存地址位数确定后,根据编码位向量的位数及访存粒度可计算出基地址的位数,从而可确定一段内存地址的首地址,当接收到访存请求时,可根据访存请求所访存的内存地址确定内存地址的基地址。以下以32比特(bit)内存地址的系统,并以访存粒度为8Byte的读数据访存为例进行说明,则粒度为(n*8)Byte的访存可以化归为η个具有相同基地址的8Byte的访存。即内存控制器执行的粒度为(n*8)Byte的一个新访存请求可由η个具有相同基地址的SByte的访存请求合并而成,实际应用中可预设地址索引表中粒度值与访存请求的访存粒度的对应关系,根据该对应关系内存控制器在接收到内存访问处理装置发送的新访存请求时可确定被合并的访存请求的访存粒度,从而计算出基地址及各个访存的内存地址,例如当设定地址索引表的粒度值为O时,表示合并的为多个粒度是8Byte的访存请求,地址索引表的编码位向量中的任一 Ibit编码位映射的内存范围为8Byte,若编码位向量有128bit,则合并成的新访存请求的编码位向量所映射的内存范围为IKB (1024bit),由此可以确定地址索引表中基地址为22bit,且基地址的值是32bit内存地址的高22bit ;若编码位向量中的任一 Ibit编码位映射的访存粒度为32Byte,即任一 Ibit编码位映射的内存范围为32Byte,且编码位向量有128bit,则合并成的新访存请求的编码位向量所映射的内存范围为4KB,由此可以确定基地址为20bit,且基地址的值是32bit内存地址的高20bit。
[0094]步骤204、提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求。
[0095]为使处理器的访存请求得到及时处理,降低访存延迟,本发明实施例中的内存访问处理装置提取地址索引表中在预置时间段内收集的访存请求的访存请求类型、内存地址的基地址、访存粒度和编码位向量进行合并形成一个新访存请求。
[0096]步骤205、将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对片外内存中与所述第一编码位标识对应的内存地址执行访存操作。
[0097]由于包括被合并访存请求所访存内存地址的基地址相同,访存粒度相同,被合并的访存请求所访存的内存地址为某块内存块中的地址,因此内存控制器可根据该新访存请求快速解析出被合并的各个访存请求所访存的内存地址并执行访存操作,也就是说,内存控制器根据新访存请求的基地址和编码位向量中编码位标识可快速计算出所访存的内存地址。而且本发明实施例采用这种合并方式只需内存访问处理装置在接收到处理器发送的访存请求时,将访存请求依照访存请求类型、访存请求所访存的内存地址的基地址、访存粒度进行依次存放,同时根据访存请求所访存的内存地址对编码位向量的编码位进行实时编码即可,因此内存访问处理装置内可通过设置一个结构简单的数据表就能够实现本发明实施例,从而结构简单,有利于内存访问处理装置的结构实现。在实际应用中,内存访问处理装置中的地址索引表可设置成多行,每一行用于在一个预置时间段内收集合并满足不同访存粒度或访存请求类型或基地址的访存请求,当从同一行中提取访存请求类型、基地址、访存粒度和编码位向量,可得到与该行对应的一个新访存请求。
[0098]步骤206、判断访存请求类型为读访存操作还是写访存操作。若是读访存,则执行步骤207和步骤208,若是写访存,则执行步骤209和步骤210。
[0099]步骤207、将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中。
[0100]步骤208、将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0101]当将新访存请求发给内存控制器后,内存控制器通过与片外内存交互实现与片外内存的访存操作。若是读访存,则该新访存操作处理的是将片外内存中访存请求的数据读取到片内缓存中,访存过程中,内存控制器会将片外内存返回的请求的数据返回给内存访问处理装置,从而内存访问处理装置可将返回的数据写入处理器上集成的缓存中,即将数据缓存入该数据在片上缓存中的宿主节点(Home Node),完成处理器的访存请求。在这个访存过程中,内存控制器可以根据新访存请求对编码位向量进行解析获取其中各个编码位映射的内存地址,从而获取各个被合并的访存请求所访存的内存地址,并以获取的内存地址对片外内存执行访存。由于新访存请求的编码位向量中配置第一编码位标识的编码位可映射到处理器的各个访存请求所访存的内存地址,因此,内存控制器可以将这些访存请求的数据分次以任意顺序返回给片内缓存,并通过内存访问处理装置更新编码位向量中已返回数据的访存请求对应的编码位来记录已处理的访存请求,通过更新位编码方式,可以实时维护读访存操作的数据向片内缓存中返回情况,具体来说,当编码位的编码位标识为I时表示该编码位映射一个对片外内存的访存请求,则当该访存请求的数据已写入片内缓存时,内存访问处理装置可将已返回数据的访存请求对应的编码位从I更新为O。当新访存请求的编码位向量中的所有编码位的编码位标识全部为O时,表示合并成新访存请求的各个访存请求全部执行完毕,因此可以清空地址索引表的全部表项内容,以备收集新的访存请求使用。
[0102]步骤209、将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址。
[0103]步骤210、将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0104]若是写访存,则该写访存操作处理是将片内缓存中访存请求对应的数据写入片外内存中,访存过程中,内存访问处理装置根据各个访存请求从片内缓存中取出要写入片外内存的数据,内存控制器根据合并后的新访存请求产生片外内存的内存地址,将内存访问处理装置取出的数据写入对应的片外内存中,完成写访存操作,在写操作过程中,内存访问处理装置及时更新地址索引表的编码位向量中已完成写访存操作的访存请求对应的编码位,以记录写访存的执行情况,即将完成写访存操作的编码位更新为表示无访存请求的第二编码位标识。
[0105]本发明实施例通过将在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中,合并成一个新访存请求,使得内存访问处理装置可以通过结构简单便于实现的地址索引表完成对访存请求的收集合并;由于一个新访存请求中被合并的多个访存请求的内存地址具有同一基地址,使得访存寻址时只需在一定的内存区域内查找即可,因此访存效率较高;通过将预设的时间内收集合并的访存请求及时发送给内存控制器,可使内存控制器能够及时处理相应的访存操作,有利于降低访存延迟。
[0106]在实际应用中,处理器片上可集成的缓存包括可编程控制的缓存结构(Programmable on-chip Memory,简称 PoM)和 / 或片内 Cache, PoM 如便签式存储(Scratch-Pad Memory,简称SPM)等,在此类缓存中,PoM对应一段内存地址空间,数据在PoM中的存储位置通过内存地址能够确定,该存储位置为数据在缓存中的宿主结点,因此通过该宿主节点可以确定处理器所访存的数据是否在片内缓存中。当片内缓存仅有PoM时,由于每个缓存在PoM上的数据,根据其宿主节点可确定数据在缓存内的位置,因此,当处理器发送的是读访存请求时,根据处理器发送的读访存请求所访存的内存地址可确定所访存的数据是否在PoM上,当读访存请求的数据在PoM上时,处理器可直接得到所访存的数据,当读访存请求的数据不在PoM上时,该读访存请求需要发送给内存控制器以访问片外内存,因此,在片内缓存仅有PoM时,利用设置在处理器和内存控制器之间的内存访问处理装置将多个读访存请求进行合并处理,内存控制器执行访存处理得到的数据通过内存访问处理装置返回并缓存入PoM的各个宿主节点。若处理器发送的是写访存请求,根据该写访存请求所访存的内存地址将写数据缓存入PoM,同时将该写访存请求发送给内存控制器以将其写入片外内存,在这个写访存过程中,多个写访存请求被内存访问处理装置合并处理,内存控制器执行完写访存操作后片外内存存储的数据与片内PoM中的数据保持一致,实现了写访存操作的处理。
[0107]当片内缓存仅有片内Cache时,处理器的访存请求在没有命中Cache数据时,可以通过直接访问内存控制器,由内存控制器对片外内存执行访存操作以将访存请求的数据直接写入片外内存或者从片外内存读入Cache中。在实际应用中,若多个没有命中的访存请求同时并发到内存控制器时,仍然会出现访存堵塞问题,为使没有命中Cache数据的访存请求也能够及时处理,本发明实施例还通过对片内Cache的管理策略进行了适当调整,例如通过对现有的Cache进行改进,在Cache中设置数据的宿主节点,保证访存Cache时也能够根据存储位置确定数据是否在Cache中的状态,设置了数据宿主节点的Cache,其对处理器的访存请求的数据处理与上述PoM类似,因此当访存请求没有命中Cache数据时,Cache可将访存请求发送给内存访问处理装置以进行合并处理统一访问内存控制器。
[0108]当缓存既有PoM,又有片内Cache时,处理器片上设置的地址选择器可根据访存请求的内存地址确定该访存请求是对PoM的访问还是对片内Cache的访问,当内存地址属于PoM地址空间时,该请求为PoM请求,否则为Cache请求,因此,通过地址选择器可过滤出对PoM的访问请求,针对PoM的访问请求,PoM可采用与上述片内缓存仅有PoM时的处理方式进行处理,针对片内Cache的访问请求,片内Cache也可采用上述片内缓存仅有片内Cache时的处理方式进行处理。
[0109]图4为本发明内存访问处理方法实施例三的流程图,如图4所示,本实施例的方法以内存控制器为执行主体,本实施例的方法包括:
[0110]步骤301、接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识。
[0111]步骤302、根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0112]本实施例中,内存控制器接收到内存访问处理装置发送的由多个访存请求合并而成的新访存请求后,通过对新访存请求进行解析,获取被合并的各个访存请求所访存的内存地址,从而根据获取的内存地址对片外内存执行访存操作。由于由多个访存请求合并得到新访存请求在内存访问处理装置发送给内存控制器时作为一个访存请求统一发送的,因此可以减少对内存带宽的占用,从而提高了内存带宽利用率,同时利用内存访问处理装置在编码位向量中的配置的第一编码位标识对应的编码位映射到被合并的访存请求所访存的内存地址,使得内存控制器可解析出处理器发送的访存请求所访存的片外内存的内存地址,因此可准确执行处理器的访存请求。
[0113]在实际应用中,为使内存访问处理装置的结构简单,而且内存控制器接收到新访存请求时快速解析出所访存的内存地址,本发明实施例中内存访问处理装置采用将在一个预置时间段内收集的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成的新访存请求,内存控制器接收到新访存请求后,内存控制器首先解析获取所述新访存请求被合并的访存请求的所述基地址信息、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息;然后再根据编码位向量中编码位配置的第一编码位标识解析获取被内存访问处理装置合并的各个访存请求所访存的内存地址,具体计算所访存的内存地址的过程为:若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O至N-1,因此当内存控制器解析新访存请求获取基地址、编码位向量和访存粒度后,可计算出编码位向量中第i位所映射的内存地址“基地址+粒度*i”。最后对解析获取的被访存的内存地址执行与所述新访存请求的访存请求类型相应的访存操作完成处理器的访存操作。
[0114]在本发明实施例中,当内存控制器接收到新访存请求时,根据新访存请求的访存请求类型可确定是执行读访存操作还是写访存操作。若新访存请求的访存请求类型为读访存操作,则内存控制器对解析获取的被访存的内存地址执行与所述新访存请求的访存请求类型相应的访存操作,具体包括:读取解析获取的被访存的内存地址中的数据;将读取的数据返回给内存访问处理装置,以使内存访问处理装置将该返回的数据写入处理器片上集成的缓存中,并将地址索引表的编码位向量中已返回数据的访存请求对应的编码位标识更新为表示无访存请求的第二编码位标识。若新访存请求的访存请求类型为写访存操作,则对解析获取的被访存的内存地址执行与所述新访存请求的访存请求类型相应的访存操作,包括:获取内存访问处理装置发送的写访存操作的数据;将写访存操作的数据写入解析获取的被访存的内存地址。
[0115]本实施例中内存控制器通过根据接收的新访存请求对片外内存中与配置第一编码位标识的编码位对应的内存地址执行访存操作,实现了对内存访问处理装置合并的各个访存请求的处理,在访存过程中,内存控制器通过一次接收访存请求实现了对多个访存请求的接收处理过程,有效提高了内存带宽利用率,保证处理器的访存请求得到及时处理。
[0116]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,处理器,如中央处理单元(Central Processing Unit, CPU),执行包括上述方法实施例的步骤;而前述的存储介质包括:只读存储器(read-only memory, ROM)、随机存储器(random access memory, RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0117]图5为本发明内存访问处理装置实施例一的结构示意图,如图5所示,本发明实施例的装置包括:第一获取单元40,用于接收处理器发送的访存请求;合并单元41,用于将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;发送单元42,用于将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对与所述第一编码位标识对应的内存地址执行访存操作。
[0118]本发明实施例的内存访问处理装置是设置在处理器与内存控制器的访存通路中,用于将处理器发出的多个访存请求合并成一个新访存请求,统一发送给内存控制器,以降低内存带宽利用率,再通过内存控制器对片外内存进行访存。其中第一获取单元40接收处理器的访存请求,合并单元41将第一获取单元40在一个预置时间段内接收的多个访存请求进行合并,并为每个访存请求所访存的内存地址配置对应的第一编码位标识,以使内存控制器能够准确解析出所访存的内存地址,发送单元42将合并单元41合并后的新访存请求发送给内存控制器,使得内存控制器根据所述新访存请求对片外内存执行访存操作。
[0119]本发明实施例中合并单元通过将预置时间段内的多个访存请求合并成一个新访存请求,使得访存过程中带宽利用率较低的多个的访存请求合并成对应于带宽利用率高的一个新访存请求以统一对内存控制器执行访问操作,降低了对内存控制器发送访存请求数,有利于提高内存的带宽利用率,而且还保证了内存控制器对处理器的访存请求进行及时处理。在将多个访存请求合并获得新访存请求时,为每个被合并的访存请求所访存的内存地址配置对应的第一编码位标识,使得内存控制器根据新访存请求进行访存时,能够根据第一编码位标识准确地对相应的内存地址执行访存操作,实现处理器与片外内存之间数据的有效交换,从而本发明实施例不仅提高了对处理器的访存请求处理的及时性,而且还有效提高了访存过程中内存带宽的有效利用率。
[0120]图6为本发明内存访问处理装置实施例二的结构示意图,如图6所示,本实施例中,合并单元41,具体用于将在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中;所述地址索弓I表的每一行包括访存请求类型、访存请求对应内存地址的基地址、访存粒度和编码位向量,组成每一行的编码位向量的所有编码位对应的内存地址具有相同的基地址;提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求;判断单元47,用于根据地址索引表的每一行的访存请求类型确定该行对应的新访存请求为读访存操作还是写访存操作;写数据单元43,用于所述新访存请求的访存请求类型为读访存操作时,将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中;第一更新单元44,用于将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。读数据单元45,用于当所述新访存请求的访存请求类型为写访存操作时,将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址;第二更新单元46,用于将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
[0121]本实施例中,合并单元41将在一段时间内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索弓I表的同一行中合并成一个新访存请求,发送单元42将合并获取的新访存请求发送给内存控制器,当判断单元47确定对应的新访存请求为读访存时,即处理器发出的访存请求为从片外内存中读取数据到片内缓存,内存控制器与片外内存交互执行该新访存请求,并接收片外内存返回的数据时,将返回的数据返回给内存访问处理装置的获取单元40,从而内存访问处理装置的写数据单元43将第一获取单元40获取的访存请求的数据写到片内缓存中数据的宿主节点,在数据回填过程中,可以分多次逐步写到缓存中,并通过第一更新单元44更新地址索引表中编码位向量的编码位配置的标识来记录已返回数据的访存请求。当判断单元47确定对应的新访存请求为写访存时,即处理器发出的访存请求为将片内缓存中的数据写入片外内存中,内存访问处理装置的读数据单元45从片上缓存中读取数据,发送单元42将取出的数据发送给内存控制器,内存控制器接收到新访存请求及对应的数据后,根据编码位向量及基地址产生片外内存的内存地址,并将对应的数据写入该产生的内存地址。在数据写操作中,第二更新单元46实时更新编码位向量中已完成写访存操作的访存请求对应的编码位标识。内存访问处理装置在收集访存请求存入地址索引表的过程中,若内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A-log2(N*L))位。也就是说,当系统内存地址位数确定后,根据编码位向量的位数及访存粒度可计算出基地址的位数,从而可确定一段内存地址的首地址,因此可将接收到的访存请求收集在与基地址、访存粒度相应的地址索引表中。内存访问处理装置按照访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同将多个访存请求进行合并后,内存控制器可根据配置在编码位向量中的第一编码位标识准确解析出被合并的访存请求所访存的内存地址以执行访存操作。
[0122]本实施例中通过将访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求进行合并,不仅使得内存控制器能够及时准确地处理处理器的访存请求,有利于提高内存控制器的带宽利用率,而且内存访问处理装置的结构简单,便于实现。
[0123]图7为本发明内存访问处理装置实施例三的结构示意图,如图7所示,本实施例的内存访问处理装置包括处理器80、存储器82、通信接口 84以及总线83,处理器80、通信接口 84、存储器82通过总线83相互的通信;其中存储器82用于存储程序指令,如上述内存访问处理方法实施例中的操作步骤对应的指令代码,处理器80可用于执行存储器82中的程序指令,通信接口 84,可用于发送或接收处理器与存储器之间的程序指令或根据程序指令生成的数据;总线83用于内存访问处理装置内部各个功能单元之间的通信。
[0124]图8为本发明内存控制器实施例的结构示意图,如图8所示,本实施例中,内存控制器包括:第二获取单元50,用于接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;访存单元51,用于根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0125]本实施例中,内存控制器的第二获取单元50接收到内存访问处理装置合并形成的新访存请求后,由于该新访存请求中设置有与各个访存请求所访存的内存地址对应的第一编码位标识,因此,内存控制器可以根据配置的第一编码位标识解析出所要访存的内存地址,并根据新访存请求的访存粒度、访存请求类型执行相应的访存操作,从而完成处理器的访存操作,由于内存控制器通过统一接收一个新访存请求可完成多个的处理器发送的访存请求的接收处理,使得带宽利用率得到了提高,降低了访存延迟。
[0126]为使内存控制器快速计算访存操作的内存地址,同时也有利于内存访问处理装置的结构简单,当内存访问处理装置将在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成新访存请求时,内存控制器的第二获取单元50获取内存访问处理装置发送的新访存请求后,访存单元50解析获取所述新访存请求被合并的访存请求的所述基地址、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息;若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O至N-1 ;并对获取单元获得所述被合并的访存请求所访存的内存地址执行访存操作。
[0127]若所述新访存请求的访存请求类型为读访存操作,则所述访存单元具体用于读取解析获取的被访存的内存地址中的数据;将读取的数据返回给内存访问处理装置,以使内存访问处理装置将该返回的数据写入处理器上集成的缓存中。若所述新访存请求的访存请求类型为写访存操作,则所述访存单元具体用于获取内存访问处理装置发送的写访存操作的数据;将写访存操作的数据写入解析获取的被访存的内存地址。
[0128]本发明实施例中,内存控制器的第二获取单元获取内存访问处理装置合并形成的新访存请求后,访存单元通过根据配置在新访存请求的编码位向量中第一编码位标识解析获取所述被合并的访存请求所访存的内存地址,并对解析得到的内存地址执行访存操作,实现了将处理器多个的访存请求需多次单独对内存控制器的访问操作转化为一次访问操作的一个新访存请求时准确对片外内存的访存操作,提高了内存带宽利用率,降低了访存延迟。
[0129]本发明实施例还提供一种内存访问系统,包括:至少一个处理器、片外内存、如上述图5、图6或图7所示的内存访问处理装置和如图8所示的内存控制器。所述内存访问处理装置,用于将在一个预置时间段内接收的所述处理器发送的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;并将所述新访存请求发送给内存控制器;所述内存控制器,用于接收所述新访存请求;并根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
[0130]图9为本发明内存访问系统实施例一的结构示意图,如图9所示,本实施例的系统包括:多个处理逻辑601、多个片内存储602、内存访问处理装置603、内存控制器604和片外内存605,多个处理逻辑601可以对应于多个处理器核,多个片内存储602为片上缓存,内存访问处理装置603用于对处理逻辑601通过片内存储602发送的各种粒度的访存请求进行合并,合并成较大的访存请求,包括:
[0131]接收处理器发送的访存请求;
[0132]将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;
[0133]将所述新访存请求发送给内存控制器604,以使所述内存控制器根据所述新访存请求对片外内存605中与所述第一编码位标识对应的内存地址执行访存操作。
[0134]由于内存访问处理装置603能够将多个访存请求进行合并后统一发送给内存控制器,再由内存控制器对片外内存进行访存操作,因此能够有效提高内存带宽的利用率。本实施例中的内存访问处理装置603可以采用上述图5、图6或图7所示的装置。
[0135]在实际应用中,上述图9中的片内存储可以包括PoM和Cache,图10为本发明实际应用中内存访问系统实施例二的结构示意图,如图10所示,该系统的处理器片上包括分别与多个处理逻辑701对应的多个地址选择器702,用于根据各个处理逻辑701发出的访存请求确定访存请求的访存地址是否位于PoM地址空间,若是则将该访存请求发送给PoM704,否则发送给Cache703,发送给PoM704的访存请求,通过PoM704将访存请求发送给内存访问处理装置705中的地址索引表,由地址索引表将访存请求进行收集合并,若当前访存请求与地址索引表中当前已有的任何行中的访存请求类型、基地址和粒度都不同,则根据该当前访存请求的访存请求类型、访存请求所访存的内存地址对应的基地址和访存粒度在地址索引表中重新分配一行,并对该当前访存请求在编码位向量中的编码位进行编码。若当前访存请求与地址索引表中当前已有的某一行中的访存请求类型、基地址和访存粒度都相同,则将该当前访存请求合并到该行中,编码该访存请求的内存地址对应的编码位。根据地址选择器702确定该内存地址不属于PoM地址空间时,地址选择器702会将访存请求发送给Cache703,由Cache703发送给内存控制器706进行访存操作。
[0136]在具体应用中,若Cache73为设置有数据宿主节点的片内Cache,即对片内Cache的管理策略进行部分修改,增加数据的宿主节点,则Cache也可将访存请求发送给内存访问处理装置以进行合并处理。因此,当Cache703接收到访存请求时,若请求的数据在Cache中,则可将数据直接返回给处理逻辑701,若请求的数据不在Cache中,即没有命中Cache数据,则Cache可将该没有命中数据的访存请求(Cache Miss请求)发送给内存访问处理装置705,内存访问处理装置705可对没有命中的访存请求进行合并后统一发送给内存控制器,内存访问处理装置对没有命中的访存请求的合并处理过程如图1或图2所示实施例,不再详述。若上述图9所示实施例中的片内存储均为Cache,也可通过设置数据的宿主节点而采用内存访问处理装置将没有命中Cache数据的访存请求进行合并处理的方式。内存访问处理装置705将地址索引表中的各个合并形成的新访存请求发送给内存控制器706,从而使内存控制器及时与片外内存707交互实现访存操作。
[0137]以下分别以32bit内存地址的系统,访存粒度为8字节的读访存和写访存为例进行详细说明。
[0138]图11为内存访问处理装置的地址索引表中读访存请求合并结果示意图,图12A为图11中合并的新访存请求的访存过程示意图,图12B为图11中合并的新访存请求访存后数据回填过程的示意图,图12C为图11中合并的新访存请求访存后数据回写完毕的状态示意图,如图11、图12A?12C所示,根据粒度值8Byte和编码位向量的位数128bit可确定基地址为22bit,该新访存请求中合并了两个粒度为8字节的读访存请求,即图11中编码位向量中为I的编码位对应的内存地址被该新访存请求执行读访存操作,由于是读访存,内存控制器可直接根据将新访存请求对片外内存进行读访存,具体来说,内存控制器根据新访存请求中标识为I的编码位及基地址计算出内存地址,执行对片外内存进行读操作,当某一个编码位对应的内存地址数据被返回填写到PoM中后,更新该对应的编码位,图11中地址索引表回填一个数据后该地址索引表为图12B所示的状态,当地址索引表中某一行的编码位向量中的所有编码位均为O时,表明该行被合并的所有的访存请求的数据回填完毕,如图12C所示,可以对地址索引表中该行表项内容清空。
[0139]图13内存访问处理装置的地址索引表中写访存请求合并结果示意图,图14为图13中合并的新访存请求的访存过程示意图,如图13和图14所示,根据粒度值SByte和编码位向量的位数128bit可确定基地址为22bit,该新访存请求中合并了两个粒度为8字节的写访存请求,即图13中编码位向量中为I的编码位对应的内存地址被该新访存请求执行写访存操作,内存访问处理装置将编码位对应的内存地址中的数据从PoM或Cache中读出,由于是写访存,该新访存发送到内存控制器后,内存控制器根据编码位向量中的编码位及基地址计算产生内存地址,将内存访问处理装置读取的数据写入其产生的片外内存的内存地址中,在写访存操作过程中,内存访问处理装置更新内存控制器已完成写操作对应内存地址的编码位,直至编码位向量中所有位均为0,写访存操作完成,内存访问处理装置可以清空地址索引表中各个编码位均为O的编码位向量所在行的表项内容。
[0140]最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
【权利要求】
1.一种内存访问处理方法,其特征在于,包括: 接收处理器发送的访存请求; 将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识; 将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对与所述第一编码位标识对应的内存地址执行访存操作。
2.根据权利要求1所述的方法,其特征在于,所述将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,包括: 将在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中;所述地址索引表的每一行包括访存请求类型、访存请求所访存内存地址的基地址、访存粒度和编码位向量,组成每一行的编码位向量的所有编码位对应的内存地址具有相同的基地址; 提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求。
3.根据权利要求2所述的方法,其特征在于,若所述新访存请求的访存请求类型为读访存操作,则将所述新访存请求发送给内存控制器之后,还包括: 将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中; 将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
4.根据权利要求2所述的方法,其特征在于,若所述新访存请求的访存请求类型为写访存操作,则将所述新访存请求发送给内存控制器之后,还包括: 将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址; 将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
5.根据权利要求2至4中任一项所述的方法,其特征在于,若内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A - log2(N*L))位。
6.—种内存访问处理方法,其特征在于,包括: 接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型以及由内存地址对应的编码位组成编码位向量,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识; 根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
7.根据权利要求6所述的方法,其特征在于,所述新访存请求为在一个预置时间段内接收多个访存请求进行合并形成的,包括: 所述新访存请求为在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成的。
8.根据权利要求7所述的方法,其特征在于,所述根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,包括: 获取所述新访存请求中被合并的访存请求的所述基地址、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息; 若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O 至 N-1。
9.根据权利要求6或7或8所述的方法,其特征在于,若所述新访存请求的访存请求类型为读访存操作,则所述对解析得到的片外内存中对应的内存地址执行访存操作,包括: 读取解析获取的被访存的内存地址中的数据; 返回读取的数据。
10.根据权利要求6或7或8所述的方法,其特征在于,若所述新访存请求的访存请求类型为写访存操作,则所述对解析得到的片外内存中对应的内存地址执行访存操作,包括: 获取写访存操作的数据; 将所述写访存操作的数据写入解析获取的被访存的内存地址。
11.一种内存访问处理装置,其特征在于,包括: 第一获取单元,用于接收处理器发送的访存请求; 合并单元,用于将在一个预置时间段内接收的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识; 发送单元,用于将所述新访存请求发送给内存控制器,以使所述内存控制器根据所述新访存请求对与所述第一编码位标识对应的内存地址执行访存操作。
12.根据权利要求11所述的装置,其特征在于,所述合并单元,具体用于将在一个预置时间段内接收的访存请求类型相同、访存请求所访存的内存地址的基地址相同和访存粒度相同的多个访存请求收集在地址索引表的同一行中;所述地址索引表的每一行包括访存请求类型、访存请求对应内存地址的基地址、访存粒度和编码位向量,组成每一行的编码位向量的所有编码位对应的内存地址具有相同的基地址;提取所述地址索引表同一行中被收集的访存请求的访存请求类型、基地址、访存粒度和编码位向量组成一个新访存请求。
13.根据权利要求12所述的装置,其特征在于,若所述新访存请求的访存请求类型为读访存操作,所述装置还包括: 写数据单元,用于将所述内存控制器根据所述新访存请求执行读访存操作返回的数据写入所述处理器上集成的缓存中; 第一更新单元,用于将所述地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
14.根据权利要求12所述的装置,其特征在于,若所述新访存请求的访存请求类型为写访存操作,所述装置还包括: 读数据单元,用于将从所述处理器的缓存中读取的所述写访存操作对应的数据发送给所述内存控制器,以使所述内存控制器将所述写访存操作对应的数据写入所述新访存请求对应的内存地址; 第二更新单元,用于将地址索引表的编码位向量中已执行的访存请求对应的第一编码位标识更新为表示无访存请求的第二编码位标识。
15.根据权利要求11至14中任一项所述的装置,其特征在于,若内存地址位数为A,地址索引表的编码位向量的位数为N,访存粒度为L,则地址索引表中收集访存粒度为L的访存请求所在行的基地址为(A - log2(N*L))位。
16.—种内存控制器,其特征在于,包括: 第二获取单元,用于接收新访存请求,所述新访存请求为将在一个预置时间段内接收的多个访存请求进行合并形成的,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及包括被合并访存请求所访存内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识; 访存单元,用于根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
17.根据权利要求16所述的内存控制器,其特征在于,若所述新访存请求为在一个预置时间段内接收的访存请求类型相同、访存请求对应内存地址的基地址相同和访存粒度相同的多个访存请求合并形成的,则所述访存单元具体用于获取所述新访存请求中被合并的访存请求的所述基地址、访存粒度和所述新访存请求的编码位向量中每个所述第一编码位标识在所述编码位向量中的位置信息;若所述获取的第一编码位标识在所述编码位向量中第i位,通过将所述新访存请求的所述基地址加上偏移地址获得所述被合并的访存请求所访存的内存地址,所述偏移地址为所述获取的访存粒度与i的乘积,若所述新访存请求的编码位向量的位数为N,则i取值为O至N-1 ;以及对获得所述被合并的访存请求所访存的内存地址执行访存操作。
18.根据权利要求16或17所述的内存控制器,其特征在于,若所述新访存请求的访存请求类型为读访存操作,则所述访存单元具体用于读取解析获取的被访存的内存地址中的数据;返回读取的数据。
19.根据权利要求16或17所述的内存控制器,其特征在于,若所述新访存请求的访存请求类型为写访存操作,则所述访存单元具体用于获取写访存操作的数据;将所述写访存操作的数据写入解析获取的被访存的内存地址。
20.—种内存访问系统,包括:至少一个处理器和片外内存,其特征在于,还包括:内存访问处理装置和内存控制器, 所述内存访问处理装置,用于将在一个预置时间段内接收的所述处理器发送的多个访存请求进行合并形成新访存请求,所述新访存请求包括由内存地址对应的编码位组成编码位向量以及被合并的访存请求所访存的内存地址的基地址、访存粒度、访存请求类型,在所述编码位向量中每个被合并的访存请求所访存的内存地址对应的编码位上配置表示有访存操作的第一编码位标识;并将所述新访存请求发送给内存控制器; 所述内存控制器,用于接收所述新访存请求;并根据所述新访存请求解析获得所述被合并的访存请求所访存的内存地址,对解析得到的内存地址执行访存操作。
【文档编号】G06F13/16GK104346285SQ201310339295
【公开日】2015年2月11日 申请日期:2013年8月6日 优先权日:2013年8月6日
【发明者】范东睿, 宋风龙, 王达, 叶笑春 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1