内存访问方法、交叉开关及计算机系统与流程

文档序号:12963463阅读:298来源:国知局
内存访问方法、交叉开关及计算机系统与流程

本发明实施例涉及内存访问技术,尤其涉及一种内存访问方法、交叉开关及计算机系统。



背景技术:

随着计算机技术的不断发展,目前许多计算机中既包括中央处理器(centralprocessingunit,简称cpu),还包括图形处理器(graphicprocessingunit,简称gpu)。

当gpu在单位时间内能一次处理的二进制数的位数小于cpu在单位时间内能一次处理的二进制数的位数时,根据gpu在单位时间内能一次处理的二进制数的位数可以确定gpu理论上可访问的内存空间,由于内存中部分内存空间用于存储页表,因此,gpu只能在理论上可访问的内存空间基础之上,除去用于存储页表的内存空间,需要与其他设备竞争使用剩下的内存空间。例如:基于无内部互锁流水级的微处理器(microprocessorwithoutinterlockedpipedstages,简称:mips)64架构,gpu32理论上可以访问232=4g的内存空间,对应的地址范围为0-0xffffffff,然而,在该4g内存空间中只有256mb的内存空间是可以不用于存储页表,因此,gpu只能与其他设备竞争这256mb的内存空间,然而,gpu的内存需求为4g,因此256mb并不能满足gpu的内存需求。

综上,现有技术的内存访问方法不能满足gpu的内存需求。



技术实现要素:

本发明实施例提供一种内存访问方法、交叉开关及计算机系统,从而满足gpu的内存需求。

第一方面,本发明实施例提供一种内存访问方法,内存访问方法应用于无内部互锁流水级的微处理器mips架构的计算机系统,计算机系统包括: 中央处理器cpu、内存、交叉开关和图形处理器gpu,所述交叉开关分别与所述内存以及所述gpu连接,所述cpu在单位时间内能一次处理的二进制数的位数大于所述gpu在单位时间内能一次处理的二进制数的位数,所述方法包括:

所述交叉开关接收所述gpu发送的访问请求消息,所述访问请求消息中包括:待访问内存空间对应的起始地址;

若所述起始地址大于或者等于第一地址,则所述交叉开关确定所述起始地址对应的映射地址,以使所述gpu访问所述映射地址开始的内存空间;

其中,所述第一地址为所述交叉开关确定所述映射地址之前,所述gpu实际上可访问的内存空间对应的最高位地址,所述映射地址位于第二地址与第三地址之间,所述第二地址为所述gpu理论上可访问的内存空间对应的最高位地址,所述第三地址为所述内存的最高位地址;

所述第一地址小于所述第二地址,且所述第二地址小于所述第三地址。

如上所述,若所述起始地址大于或者等于第一地址,则所述交叉开关确定所述起始地址对应的映射地址,包括:若所述起始地址大于或者等于所述第一地址,则所述交叉开关对所述起始地址和所述第二地址的下一个地址进行或运算,得到所述映射地址。

如上所述,若所述起始地址大于或者等于第一地址,则所述交叉开关确定所述起始地址对应的映射地址,包括:

若所述起始地址大于或者等于所述第一地址,则所述交叉开关确定所述起始地址与所述第二地址的第一差值,和所述起始地址与所述第三地址的第二差值;

所述交叉开关根据所述第一差值和所述第二差值确定基于所述起始地址的偏移量,所述偏移量大于或者等于所述第一差值,并且小于所述第二差值;

所述交叉开关根据所述起始地址和所述偏移量,确定所述起始地址对应的映射地址。

第二方面,本发明实施例提供一种交叉开关,所述交叉开关应用于无内部互锁流水级的微处理器mips架构的计算机系统,所述计算机系统还包括:中央处理器cpu、内存和图形处理器gpu,所述交叉开关分别与所述内存以及所述gpu连接,其中,所述cpu在单位时间内能一次处理的二进制数的 位数大于所述gpu在单位时间内能一次处理的二进制数的位数,所述交叉开关包括:接收模块和确定模块;

所述接收模块,用于接收所述gpu发送的访问请求消息,所述访问请求消息中包括:待访问内存空间对应的起始地址;

若所述起始地址大于或者等于第一地址,则所述确定模块确定所述起始地址对应的映射地址,以使所述gpu访问所述映射地址开始的内存空间;

其中,所述第一地址为所述交叉开关确定所述映射地址之前,所述gpu实际上可访问的内存空间对应的最高位地址,所述映射地址位于第二地址与第三地址之间,所述第二地址为所述gpu理论上可访问的内存空间对应的最高位地址,所述第三地址为所述内存的最高位地址;

所述第一地址小于所述第二地址,且所述第二地址小于所述第三地址。

如上所述,所述确定模块具体用于:

若所述起始地址大于或者等于所述第一地址,则所述确定模块对所述起始地址和所述第二地址的下一个地址进行或运算,得到所述映射地址。

如上所述,所述确定模块具体用于:

若所述起始地址大于或者等于所述第一地址,则所述确定模块确定所述起始地址与所述第二地址的第一差值,和所述起始地址与所述第三地址的第二差值;

所述确定模块根据所述第一差值和所述第二差值确定基于所述起始地址的偏移量,所述偏移量大于或者等于所述第一差值,并且小于所述第二差值;

所述确定模块根据所述起始地址和所述偏移量,确定所述起始地址对应的映射地址。

第三方面,本发明实施例提供一种计算机系统,所述计算机系统基于无内部互锁流水级的微处理器mips架构,所述计算机系统包括:中央处理器cpu、内存、图形处理器gpu和如上所述的交叉开关;

其中,所述cpu在单位时间内能一次处理的二进制数的位数大于所述gpu在单位时间内能一次处理的二进制数的位数。

本发明实施例提供一种内存访问方法、交叉开关及计算机系统,其中,现有技术中,一旦起始地址大于或者等于第一地址时,则不能满足gpu的内存需求,即gpu不能在内存上实现读操作或者写操作。而本发明将地址扩展 到了第二地址至第三地址之间,无论起始地址是小于第一地址还是大于或者等于第一地址,gpu都存在可以访问的内存空间,从而满足了gpu的内存需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a为本发明一实施例提供的一种应用场景示意图;

图1b为本发明一实施例提供的另一种应用场景示意图;

图2为本发明一实施例提供的内存访问方法的流程图;

图3为本发明另一实施例提供的内存访问方法的流程图;

图4为本发明又一实施例提供的内存访问方法的流程图;

图5为本发明一实施例提供的一种交叉开关的示意图;

图6为本发明一实施例提供的一种计算机系统的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

为了解决现有的内存访问方法不能满足gpu对内存的需求问题,本发明实施例提供一种内存访问方法、交叉开关及计算机系统,其中该方法应用于无内部互锁流水级的微处理器mips架构的计算机系统,该计算机系统包括:中央处理器cpu、内存、交叉开关和图形处理器gpu,交叉开关分别与内存以及gpu连接,其中,cpu在单位时间内能一次处理的二进制数的位数大于gpu在单位时间内能一次处理的二进制数的位数,本发明实施例中,所述内 存可以是随机存取存储器(randomaccessmemory,简称ram),只读存储器(read-onlymemory,简称rom),或者高速缓存(cache)。

具体地,该内存访问方法可以应用于以下两场场景,图1a为本发明一实施例提供的一种应用场景示意图,如图1a所示,该内存访问方法应用于片上系统(systemonchip,简称soc),其中,交叉开关分别与gpu、缓存、cpu和内存控制器连接,内存控制器与rom或者ram连接,该交叉开关用于执行所述内存访问方法。图1b为本发明一实施例提供的另一种应用场景示意图,如图1b所示,交叉开关与缓存、内存控制器以及桥片连接,内存控制器与系统rom或者ram连接;其中,桥片上设置有gpu、ht总线接口、交叉开关、内存控制器以及rom或者ram,桥片上的交叉开关分别与gpu、桥片上的内存控制器连接,该桥片上的交叉开关的作用是:确定gpu是直接访问桥片上的rom或者ram,还是通过ht总线访问系统内存,如图1b所示,该系统内存为系统rom、ram或者缓存。基于上述两种应用场景,图2为本发明一实施例提供的内存访问方法的流程图,如图2所示,该内存访问方法包括:

s201:交叉开关接收gpu发送的访问请求消息,该访问请求消息中包括:待访问内存空间对应的起始地址;

s202:若起始地址大于或者等于第一地址,则交叉开关确定起始地址对应的映射地址,以使gpu访问映射地址开始的内存空间。

其中,本发明实施例中的内存空间指的是虚拟内存空间,即cpu的地址空间,本发明实施例所涉及的地址均是指线性地址。第一地址为交叉开关确定映射地址之前,gpu实际上可访问的内存空间对应的最高位地址,第二地址为根据gpu在单位时间内能一次处理的二进制数的位数,确定的gpu理论上可访问的内存空间对应的最高位地址,第三地址为根据cpu在单位时间内能一次处理的二进制数的位,确定的内存的最高位地址,其中,所述第一地址小于所述第二地址,且所述第二地址小于所述第三地址,起始地址的范围为[0,第二地址),映射地址位于第二地址与第三地址之间。

例如:假设cpu在单位时间内能一次处理的二进制数的位数是64位,gpu在单位时间内能一次处理的二进制数的位数是32位,根据cpu在单位时间内能一次处理的二进制数的位数,则可以确定内存空间为264=16g,根据 cpu在单位时间内能一次处理的二进制数的位数确定的内存空间对应的最高位地址,即第三地址为0xffffffffffffffff,根据gpu在单位时间内能一次处理的二进制数的位数,可以确定理论上gpu可访问的内存空间大小为232=4g,理论上可访问的内存空间对应的最高位地址,即第二地址为0xffffffff,然而由于在低4g内存空间中部分内存空间需要用来存储页表,通常只剩下256mb的内存空间可供gpu和其他设备竞争使用,这里的256mb即为gpu实际可访问的内存空间大小,对应的第一地址为0x10000000。

需要说明的是,本发明实施例中,gpu所访问的内存空间可以分为两种情况:一种为gpu所访问的是ram或者rom所对应的内存空间,另一种为gpu所访问的是缓存,针对第二种情况,当gpu在缓存中未访问到所需内容时,则缓存通过它与ram或者rom之间的映射关系,确定gpu所要访问的ram或者rom对应的地址,以使gpu可以访问ram或者rom。

本发明实施例中,若起始地址大于或者等于第一地址,则交叉开关确定所起始地址对应的映射地址,其中,映射地址位于第二地址与第三地址之间,现有技术中gpu只能访问0至第一地址之间的内存空间,一旦访问请求消息中所包括的待访问内存空间对应的起始地址大于或者等于第一地址时,则不能满足gpu的内存需求,即gpu不能在内存上实现读操作或者写操作。而本发明将地址扩展到了第二地址至第三地址之间,无论起始地址是小于第一地址还是大于或者等于第一地址,gpu都存在可以访问的内存空间,从而满足了gpu的内存需求。

实施例二

基于实施例一的基础,一种可选方式具体如下:

图3为本发明另一实施例提供的内存访问方法的流程图,如图3所示,该方法具体包括如下流程:

s301:交叉开关接收gpu发送的访问请求消息,该访问请求消息中包括:待访问内存空间对应的起始地址;

s302:交叉开关判断起始地址是否大于或者等于第一地址,若大于或者等于,则执行s303;否则,则执行s304;

s303:交叉开关对起始地址和第二地址的下一个地址进行或运算,得到映射地址,gpu访问该映射地址开始的内存空间;

s304:gpu直接访问起始地址开始的内存空间。

具体地,基于实施例一的例子,假设cpu在单位时间内能一次处理的二进制数的位数是64位,gpu在单位时间内能一次处理的二进制数的位数是32位,根据cpu在单位时间内能一次处理的二进制数的位数,确定第一地址为0x10000000,第二地址为0xffffffff,第三地址为0xffffffffffffffff,当起始地址为0x23000000时,交叉开关判断该起始地址大于第一地址,则交叉开关对起始地址和第二地址的下一个地址进行或运算,其中,第二地址的下一个地址为0x100000000,0x100000000与0x23000000进行或运算后得到映射地址为0x123000000,该映射地址在第二地址与第三地址之间,则gpu可以访问0x123000000开始的内存空间;当起始地址为0x1000000时,交叉开关判断该起始地址小于第一地址,则gpu可以访问0x1000000开始的内存空间。

本发明实施例中,当交叉开关判断起始地址大于或者等于第一地址,则交叉开关对起始地址和第二地址的下一个地址进行或运算,得到映射地址,gpu访问该映射地址对应的内存空间;当交叉开关判断起始地址小于第一地址,则gpu直接访问起始地址开始的内存空间。从而保证无论起始地址是小于第一地址还是大于或者等于第一地址,gpu都存在可以访问的内存空间,满足了gpu的内存需求。

实施例三

基于实施例一的基础,另一种可选方式具体如下:

图4为本发明又一实施例提供的内存访问方法的流程图,如图4所示,该方法具体包括如下流程:

s401:交叉开关接收gpu发送的访问请求消息,该访问请求消息中包括:待访问内存空间对应的起始地址;

s402:交叉开关判断起始地址是否大于或者等于第一地址,若大于或者等于,则执行s403;否则,则执行s406;

s403:交叉开关确定起始地址与所述第二地址的第一差值,和起始地址与第三地址的第二差值;

s404:交叉开关根据第一差值和所述第二差值确定基于所述起始地址的偏移量,该偏移量大于或者等于该第一差值,并且小于该第二差值;

s405:交叉开关根据起始地址和偏移量,确定起始地址对应的映射地址, gpu访问该映射地址开始的内存空间;

s406:gpu直接访问起始地址开始的内存空间。

具体地,基于实施例一的例子,假设cpu在单位时间内能一次处理的二进制数的位数是64位,gpu在单位时间内能一次处理的二进制数的位数是32位,根据cpu在单位时间内能一次处理的二进制数的位数,确定第一地址为0x10000000,第二地址为0xffffffff,第三地址为0xffffffffffffffff,当起始地址为0x23000000时,交叉开关判断该起始地址大于第一地址,则交叉开关确定起始地址与第二地址的第一差值为0xffffffff-0x23000000=0xdcffffff,起始地址与第三地址的第二差值为0xffffffffffffffff-0x23000000=0xfffffffdcffffff;假设确定偏移量为0xdd000000,则该起始地址对应的映射地址为0x23000000+0xdd000000=0x100000000;起始地址为0x1000000时,交叉开关判断该起始地址小于第一地址,则gpu可以访问0x1000000开始的内存空间。

本发明实施例中,当交叉开关判断起始地址大于或者等于第一地址,则交叉开关根据第一差值和第二差值,得到映射地址,gpu访问该映射地址对应的内存空间;当交叉开关判断起始地址小于第一地址,则gpu直接访问起始地址开始的内存空间。从而保证无论起始地址是小于第一地址还是大于或者等于第一地址,gpu都存在可以访问的内存空间,满足了gpu的内存需求。

实施例四

本发明实施例还提供一种交叉开关,该交叉开关应用于mips架构的计算机系统,该计算机系统还包括:中央处理器cpu、内存和图形处理器gpu,该交叉开关分别与内存以及gpu连接,其中,cpu在单位时间内能一次处理的二进制数的位数大于所述gpu在单位时间内能一次处理的二进制数的位数。

具体地,图5为本发明一实施例提供的一种交叉开关的示意图,如图5所示,该交叉开关包括:接收模块51和确定模块52;所述接收模块51用于接收所述gpu发送的访问请求消息,所述访问请求消息中包括:待访问内存空间对应的起始地址;若所述起始地址大于或者等于第一地址,则所述确定模块52确定所述起始地址对应的映射地址,以使所述gpu访问所述映射地址开始的内存空间;

其中,所述第一地址为所述交叉开关确定所述映射地址之前,所述gpu实际上可访问的内存空间对应的最高位地址,所述映射地址位于第二地址与第三地址之间,所述第二地址为所述gpu理论上可访问的内存空间对应的最高位地址,所述第三地址为所述内存的最高位地址;所述第一地址小于所述第二地址,且所述第二地址小于所述第三地址。

本发明提供一种交叉开关,该交叉开关可以用于执行图2所示实施例中的方法步骤,其实现原理和技术效果类似,此处不再赘述。

实施例五

在实施例四的基础之上,可选地,所述确定模块52具体用于:若所述起始地址大于或者等于所述第一地址,则所述确定模块对所述起始地址和所述第二地址的下一个地址进行或运算,得到所述映射地址。

本发明提供一种交叉开关,该交叉开关可以用于执行图3所示实施例中的方法步骤,其实现原理和技术效果类似,此处不再赘述。

实施例六

在实施例四的基础之上,可选地,所述确定模块52具体用于:若所述起始地址大于或者等于所述第一地址,则确定模块52确定所述起始地址与所述第二地址的第一差值,和所述起始地址与所述第三地址的第二差值;确定模块52根据所述第一差值和所述第二差值确定基于所述起始地址的偏移量,所述偏移量大于或者等于所述第一差值,并且小于所述第二差值;确定模块52根据所述起始地址和所述偏移量,确定所述起始地址对应的映射地址。

本发明提供一种交叉开关,该交叉开关可以用于执行图4所示实施例中的方法步骤,其实现原理和技术效果类似,此处不再赘述。

实施例七

图6为本发明一实施例提供的一种计算机系统的示意图,所述计算机系统基于无内部互锁流水级的微处理器mips架构,如图6所示,所述计算机系统60包括:中央处理器cpu61、内存62、图形处理器gpu63和本发明实施例所述的交叉开关64;其中,所述cpu在单位时间内能一次处理的二进制数的位数大于所述gpu在单位时间内能一次处理的二进制数的位数。

本发明提供一种计算机系统,该计算机系统中的交叉开关可以用于执行图2、图3和图4所示实施例中的方法步骤,其实现原理和技术效果类似, 此处不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一内存访问系统可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1