发明内容
本申请实施例的目的在于提供一种数据交换方法、装置、处理器及计算机系统,用以改善现有技术容易造成大量功耗的问题。
第一方面,本申请实施例提供了一种数据交换方法,用于通过环形缓冲单元交换源存储单元与目的存储单元的数据,所述环形缓冲单元包括第一缓冲单元和第二缓冲单元,所述方法包括:生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元;生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元;确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;根据所述环形缓冲单元收到的数据,生成对应的地址写请求,其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元收到的数据所对应的去向地址位于所述源存储单元;利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
在上述的实施方式中,生成源地址读请求,并向源存储单元请求对应的源数据,以便源存储单元将对应的源数据返回给环形缓冲单元的第一缓冲单元;生成目的地址读请求,并向目的存储单元请求对应的目的数据,以便目的存储单元将对应的目的数据返回给环形缓冲单元的第二缓冲单元。在确定源数据均能够被传输到第一缓冲单元,且目的数据均能够被传输到第二缓冲单元之后。对第一缓冲单元收到的源数据生成对应的地址写请求,从而将第一缓冲单元收到的源数据发送到目的存储单元;对第二缓冲单元收到的目的数据也生成对应的地址写请求,从而将第二缓冲单元收到的目的数据发送到源存储单元。本申请利用环形缓冲单元便实现了源存储单元与目的存储单元的数据交换,与现有技术相比,减小了功耗,节约了成本。
在一个可能的设计中,至少一个所述源数据返回至所述第一缓冲单元,所述根据所述环形缓冲单元收到的数据,生成对应的地址写请求,包括:根据所述第一缓冲单元收到的源数据,生成对应的目的地址写请求,其中,目的地址写请求包括对应的源数据的去向地址;所述利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送,包括:利用所述目的地址写请求,将对应的所述源数据向所述目的存储单元的所述去向地址发送。
在上述的实施方式中,对于第一缓冲单元收到的源数据,GPU可以生成目的地址写请求,目的地址写请求包括该源数据的去向地址,该去向地址位于目的存储单元,从而实现将第一缓冲单元收到的源数据写入目的存储单元。第一缓冲单元收到的源数据来自于源存储单元,由此,利用第一缓冲单元实现了数据从源存储单元向目的存储单元的转移过程。
在一个可能的设计中,至少一个所述目的数据返回至所述第二缓冲单元,所述根据所述环形缓冲单元收到的数据,生成对应的地址写请求,包括:根据所述第二缓冲单元收到的目的数据,生成对应的源地址写请求,其中,源地址写请求包括对应的目的数据的去向地址;所述利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送,包括:利用所述源地址写请求,将对应的所述目的数据向所述源存储单元的所述去向地址发送。
在上述的实施方式中,对于第二缓冲单元收到的目的数据,GPU可以生成源地址写请求,源地址写请求包括该目的数据的去向地址,该去向地址位于源存储单元,从而实现将第二缓冲单元收到的目的数据写入源存储单元。第二缓冲单元收到的目的数据来自于目的存储单元,由此,利用第二缓冲单元实现了数据从目的存储单元向源存储单元的转移过程。
在一个可能的设计中,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口相同;步骤:生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求在步骤:生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求之后执行。
在上述的实施方式中,向目的存储单元发送目的地址读请求的目的在于使目的存储单元返回目的数据,同理,向源存储单元发送源地址读请求的目的在于使源存储单元返回源数据。在源存储单元传输数据的通信接口与目的存储单元传输数据的通信接口相同的情况下,若目的存储单元返回目的数据与源存储单元返回源数据并行进行,则会交织占用同一通信接口,从而导致传输效率变低,因此,目的存储单元返回目的数据与源存储单元返回源数据不在同一时间段进行,利于提高传输效率。
在一个可能的设计中,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口不相同;步骤:生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求与步骤:生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求并行执行。
在上述的实施方式中,向目的存储单元发送目的地址读请求的目的在于使目的存储单元返回目的数据,同理,向源存储单元发送源地址读请求的目的在于使源存储单元返回源数据。在源存储单元传输数据的通信接口与目的存储单元传输数据的通信接口不相同的情况下,目的存储单元返回目的数据与源存储单元返回源数据并行进行互不干扰,都能维持较高的传输速率,从而提高了数据传输的效率。
在一个可能的设计中,所述数据交换方法在有序模式下进行,所述确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元,包括:确定所述至少一个源地址读请求均向所述源存储单元发送,且所述至少一个目的地址读请求均向所述目的存储单元发送。
在上述的实施方式中,确定至少一个源地址读请求均向所述源存储单元发送,即可确定上述的每个源地址读请求对应的源数据能够被传输回第一缓冲单元;确定至少一个目的地址读请求均向目的存储单元发送,即可确定上述的每个目的地址读请求对应的目的数据能够被传输回第二缓冲单元,从而避免数据尚未传输到缓冲单元时就被对端的发送过来的数据覆盖掉。
在一个可能的设计中,所述数据交换方法在无序模式下进行,所述确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元,包括:确定所述源数据均传输至所述第一缓冲单元,且所述目的数据均传输至所述第二缓冲单元。
在上述的实施方式中,数据交换方法在无序模式下进行,读请求与写请求没有顺序的限制,故在源数据均传输至第一缓冲单元,且目的数据均传输至第二缓冲单元后,才能够确定源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;从而避免数据尚未传输到缓冲单元时就被对端的发送过来的数据覆盖掉。
第二方面,本申请实施例提供了一种数据交换装置,用于通过环形缓冲单元交换源存储单元与目的存储单元的数据,所述环形缓冲单元包括第一缓冲单元和第二缓冲单元,所述装置包括:源读请求生成模块,用于生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元;目的读请求生成模块,用于生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元;数据传输确定模块,用于确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;写请求生成模块,用于根据所述环形缓冲单元收到的数据,生成对应的地址写请求,其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元收到的数据所对应的去向地址位于所述源存储单元;数据发送模块,用于利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
第三方面,本申请实施例提供了一种处理器,包括环形缓冲单元、源存储单元、目的存储单元、源读地址逻辑生成电路以及目的读地址逻辑生成电路,所述源读地址逻辑生成电路与所述源存储单元连接,所述目的读地址逻辑生成电路与所述目的存储单元连接,所述环形缓冲单元包括第一缓冲单元和第二缓冲单元,所述源存储单元通过对应的通信接口与所述第一缓冲单元和第二缓冲单元连接,所述目的存储单元通过对应的通信接口与所述第一缓冲单元和所述第二缓冲单元连接,所述处理器用于通过所述第一缓冲单元和第二缓冲单元交换源存储单元与目的存储单元的数据;所述源读地址逻辑生成电路用于生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元;所述目的读地址逻辑生成电路用于生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元;所述处理器用于确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;所述处理器用于根据所述环形缓冲单元收到的数据,生成对应的地址写请求,其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元收到的数据所对应的去向地址位于所述源存储单元;所述处理器用于利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
在一个可能的设计中,还包括目的写地址逻辑生成电路,所述目的写地址逻辑生成电路与所述第一缓冲单元连接;所述目的写地址逻辑生成电路用于根据所述第一缓冲单元收到的源数据,生成对应的目的地址写请求,其中,目的地址写请求包括对应的源数据的去向地址;所述第一缓冲单元用于利用所述目的地址写请求,将对应的所述源数据向所述目的存储单元的所述去向地址发送。
在一个可能的设计中,还包括源写地址逻辑生成电路,所述源写地址逻辑生成电路与所述第二缓冲单元连接;所述源写地址逻辑生成电路用于根据所述第二缓冲单元收到的目的数据,生成对应的源地址写请求,其中,源地址写请求包括对应的目的数据的去向地址;所述第二缓冲单元用于利用所述源地址写请求,将对应的所述目的数据向所述源存储单元的所述去向地址发送。
在一个可能的设计中,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口相同;所述源存储单元为全局数据共享GDS存储器,所述目的存储单元为GDS存储器;或所述源存储单元为高速缓存存储器、设备内存中的任一个,所述目的存储单元为所述高速缓存存储器、所述设备内存中的任一个。
在一个可能的设计中,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口不相同;所述源存储单元为所述GDS存储器,所述目的存储单元为所述高速缓存存储器、所述设备内存中的任一个;或所述源存储单元为高速缓存存储器、设备内存中的任一个,所述目的存储单元为所述GDS存储器。
在一个可能的设计中,所述数据交换方法在有序模式下进行,所述数据交换方法在有序模式下进行;所述源读地址逻辑生成电路用于确定所述至少一个源地址读请求均向所述源存储单元发送;所述目的读地址逻辑生成电路用于确定所述至少一个目的地址读请求均向所述目的存储单元发送。
在一个可能的设计中,所述数据交换方法在无序模式下进行;所述第一缓冲单元用于确定所述源数据均传输至所述第一缓冲单元;所述第二缓冲单元用于确定所述目的数据均传输至所述第二缓冲单元。
第四方面,本申请实施例提供了一种计算机系统,包括上述第三方面或第三方面的任一可选的实现方式的处理器。
第五方面,本申请提供一种可执行程序产品,所述可执行程序产品在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
在介绍本申请实施例之前,先对现有的技术方案进行简要说明:
请参见图1,图1示出了现有的GPU进行直接内存存取(Direct Memory Access,简称DMA)操作的硬件流程图,现有的GPU包括环形缓冲单元102、源读地址逻辑生成电路104、目的写地址逻辑生成电路106、GDS接口108、高速缓存接口110、全局数据共享(Global DataShare,简称GDS)存储器112、高速缓存(Cache)存储器116、设备内存120(Device memory)、设备内存控制器118。源读地址逻辑生成电路104分别与GDS接口108以及高速缓存接口110连接,目的写地址逻辑生成电路106分别与GDS接口108以及高速缓存接口110连接。GDS存储器112通过GDS接口108与环形缓冲单元102连接,高速缓存存储器116通过多个高速缓存路由114与高速缓存接口110连接,高速缓存接口110也与环形缓冲单元102连接。高速缓存存储器116还通过设备内存控制器118与设备内存120连接。
环形缓冲单元102(ring buffer)为用于缓存数据的缓存单元,环形缓冲单元102可以由静态随机存取存储器(Static Random-Access Memory,简称SRAM)实现。
GPU可以利用源读地址逻辑生成电路104生成源地址读请求,源地址读请求可以从源存储单元读取数据,从源存储单元获取到的数据被写入环形缓冲单元102。环形缓冲单元102中具有与源地址读请求对应的指针,该指针指向环形缓冲单元102中待被写入数据的空白存储空间,当空白存储空间被写入数据后,更新该指针指向的位置,使该指针指向新的待被写入数据的空白存储空间。源存储单元可以为GDS存储器112、高速缓存存储器116、设备内存120中的任意一个。
GPU可以利用目的写地址逻辑生成电路106生成目的地址写请求,该目的地址写请求可以从环形缓冲单元102读取数据,从环形缓冲单元102读取到的数据被写入目的存储单元。环形缓冲单元102中还具有与目的地址写请求对应的指针,该指针指向待被从环形缓冲单元102读取的数据对应的存储空间,当相应的数据被读取后,更新该指针指向的位置,使该指针指向新的待被从环形缓冲单元102读取的数据对应的存储空间。其中,若目的地址写请求对应的指针指向的位置和源地址读请求对应的指针指向的位置相同,表示环形缓冲单元102为空。目的存储单元也可以为GDS存储器112、高速缓存存储器116、设备内存120中的任意一个。
上述的硬件流程只能实现数据的传输,若要实现数据交换,需要引入新的内核,会造成功耗变高。
在本申请实施例中,通过扩展命令处理器(Command processor)中的DMA引擎实现数据交换,在DMA_DATA命令包中增加交换模式(swap mode),从而使用DMA_DATA_SWAP实现数据交换。
具体地,可以在DMA_DATA命令包的DW0中加入新字段[31:31]:
SWAP_MODE.
0=DMA_MODE:DMA-Copy data from source to destination.
1=SWAP_MODE:swap data between source and destination.
上述新字段定义了DMA SWAP操作的SWAP模式的位,SWAP模式的位设置为0,表示按照DMA方式将数据从源位置复制到目的位置;SWAP模式的位设置为1,表示交换源位置与目的位置各自对应的数据。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参见图3,图3示出了本申请实施例提供的数据交换方法,该方法可以由图2示出的GPU执行,GPU包括环形缓冲单元102、源读地址逻辑生成电路104、源写地址逻辑生成电路105、目的写地址逻辑生成电路106、目的读地址逻辑生成电路107、GDS接口108、高速缓存接口110、GDS存储器112、多个高速缓存路由114、高速缓存存储器116、设备内存控制器118以及设备内存120。
环形缓冲单元102包括第一缓冲单元1021和第二缓冲单元1022,第一缓冲单元1021分别与GDS接口108和高速缓存接口110连接,第二缓冲单元1022分别与GDS接口108和高速缓存接口110连接。源读地址逻辑生成电路104分别与GDS接口108和高速缓存接口110连接,源写地址逻辑生成电路105与第二缓冲单元1022连接,目的写地址逻辑生成电路106与第一缓冲单元1021连接,目的读地址逻辑生成电路107分别与GDS接口108和高速缓存接口110连接。GDS接口108还与GDS存储器112连接,高速缓存接口110还通过多个高速缓存路由114与高速缓存存储器116连接。高速缓存存储器116还与设备内存控制器118连接,设备内存控制器118还与设备内存120连接。
可选地,不妨设环形缓冲单元102的存储空间为64*512bit,第一缓冲单元1021与第二缓冲单元1022的存储空间可以相等,且均等于环形缓冲单元102的一半(例如,第一缓冲单元1021与第二缓冲单元1022的存储空间可以均为32*512bit),从而可以较大程度地利用环形缓冲单元102。应当理解,第一缓冲单元1021的存储空间可以与第二缓冲单元1022相等,也可以不相等,第一缓冲单元1021与第二缓冲单元1022的存储空间的具体数值不应该理解为是对本申请的限制。
GPU用于通过环形缓冲单元102的第一缓冲单元1021和第二缓冲单元1022交换源存储单元与目的存储单元的数据。该方法具体包括如下步骤S110至步骤S150:
步骤S110,生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元1021。
至少一个源地址读请求中的每个源地址读请求均包括对应的源地址,每个源地址均存储有对应的源数据,每个源地址均位于源存储单元。
源地址读请求可以由GPU通过源读地址逻辑生成电路104生成。GPU可以利用源读地址逻辑生成电路104把生成的每个源地址读请求发送给源存储单元。对于每个源地址读请求,源存储单元根据源地址查找到对应的源数据,并把源数据返回给第一缓冲单元1021。
步骤S120,生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元1022。
至少一个目的地址读请求中的每个目的地址读请求均包括对应的目的地址,每个目的地址均存储有对应的目的数据,每个目的地址均位于目的存储单元。
目的地址读请求可以有GPU通过目的读地址逻辑生成电路107生成。GPU可以利用目的读地址逻辑生成电路107把生成的每个目的地址读请求发送给目的存储单元。对于每个目的地址读请求,目的存储单元根据目的地址查找到对应的目的数据,并把目的数据返回给第二缓存单元。
步骤S130,确定所述源数据能传输到所述第一缓冲单元1021,且所述目的数据能传输到所述第二缓冲单元1022。
GPU确定全部源数据均能够传输到第一缓冲单元1021,GPU确定全部目的数据均能够传输到第二缓冲单元1022。确定全部源数据均能够传输到第一缓冲单元1021是为了避免在源数据尚未完全传输到第一缓冲单元1021的情况下目的数据就被发送到了源存储单元,导致尚未被传输的源数据被目的数据覆盖。同样的,确定全部目的数据均能够传输到第二缓冲单元1022是为了避免在目的数据尚未完全传输到第二缓冲单元1022的情况下源数据就被发送到了目的存储单元,导致尚未被传输的目的数据被源数据覆盖。
在不同的运行模式下,确定源数据能传输到第一缓冲单元1021、目的数据能传输到第二缓冲单元1022的条件不同。
可选地,数据交换方法可以在有序模式(in-order mode)下进行,则步骤S130可以为:确定所述至少一个源地址读请求均向所述源存储单元发送,且所述至少一个目的地址读请求均向所述目的存储单元发送。
数据交换方法在有序模式下进行,由于读请求先发送,写请求后发送,读请求所请求的数据在写请求发送前,均已经在返回环形缓冲单元102的途中。因此,所述源读地址逻辑生成电路104用于确定至少一个源地址读请求均向所述源存储单元发送,即可确定上述的每个源地址读请求对应的源数据能够被传输回第一缓冲单元1021;目的读地址逻辑生成电路107用于确定至少一个目的地址读请求均向目的存储单元发送,即可确定上述的每个目的地址读请求对应的目的数据能够被传输回第二缓冲单元1022,从而避免数据尚未传输到缓冲单元时就被对端的发送过来的数据覆盖掉。
可选地,数据交换方法可以在无序模式(out-of-order mode)下进行,则步骤S130可以为:确定所述源数据均传输至所述第一缓冲单元1021,且所述目的数据均传输至所述第二缓冲单元1022。
数据交换方法在无序模式下进行,读请求与写请求没有顺序的限制,故在源数据均传输至第一缓冲单元1021,且目的数据均传输至第二缓冲单元1022后,才能够确定源数据能传输到所述第一缓冲单元1021,且所述目的数据能传输到所述第二缓冲单元1022;从而避免数据尚未传输到缓冲单元时就被对端的发送过来的数据覆盖掉。
步骤S140,根据所述环形缓冲单元102收到的数据,生成对应的地址写请求。
步骤S150,利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元1021收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元1022收到的数据所对应的去向地址位于所述源存储单元。
在确定源数据均能够被传输到第一缓冲单元1021,且目的数据均能够被传输到第二缓冲单元1022之后。对第一缓冲单元1021收到的源数据生成对应的地址写请求,从而将第一缓冲单元1021收到的源数据发送到目的存储单元;对第二缓冲单元1022收到的目的数据也生成对应的地址写请求,从而将第二缓冲单元1022收到的目的数据发送到源存储单元。本申请利用环形缓冲单元102便实现了源存储单元与目的存储单元的数据交换,与现有技术相比,减小了功耗,节约了成本。
可选地,在一种具体实施方式中,请参见图4,步骤S140至步骤S150分别对应于如下步骤S141至步骤S151:
步骤S141,根据所述第一缓冲单元1021收到的源数据,生成对应的目的地址写请求。
目的地址写请求包括对应的源数据的去向地址,该去向地址位于目的存储单元。可选地,每当第一缓冲单元1021收到一次源数据,目的写地址逻辑生成电路106便可以生成对应的目的地址写请求,从而可以将第一缓冲单元1021中的源数据及时的传输给目的存储单元。
步骤S151,利用所述目的地址写请求,将对应的所述源数据向所述目的存储单元的所述去向地址发送。
GPU执行目的地址写请求,通过第一缓冲单元1021将源数据向目的存储单元的去向地址发送,以将该源数据写入目的存储单元。
对于第一缓冲单元1021收到的源数据,GPU可以生成目的地址写请求,目的地址写请求包括该源数据的去向地址,该去向地址位于目的存储单元,从而实现将第一缓冲单元1021收到的源数据写入目的存储单元。第一缓冲单元1021收到的源数据来自于源存储单元,由此,利用第一缓冲单元1021实现了数据从源存储单元向目的存储单元的转移过程。
可选地,在一种具体实施方式中,请参见图5,步骤S140至步骤S150分别对应于如下步骤S241至步骤S251:
步骤S241,根据所述第二缓冲单元1022收到的目的数据,生成对应的源地址写请求。
源地址写请求包括对应的目的数据的去向地址,该去向地址位于源存储单元。可选地,每当第二缓冲单元1022收到一次目的数据,源写地址逻辑生成电路105便会生成对应的源地址写请求,从而可以将第二缓冲单元1022中的目的数据及时的传输给源存储单元。
步骤S251,利用所述源地址写请求,将对应的所述目的数据向所述源存储单元的所述去向地址发送。
GPU执行源地址写请求,通过第二缓冲单元1022将目的数据向源存储单元的去向地址发送,以将该目的数据写入源存储单元。
对于第二缓冲单元1022收到的目的数据,GPU可以生成源地址写请求,源地址写请求包括该目的数据的去向地址,该去向地址位于源存储单元,从而实现将第二缓冲单元1022收到的目的数据写入源存储单元。第二缓冲单元1022收到的目的数据来自于目的存储单元,由此,利用第二缓冲单元1022实现了数据从目的存储单元向源存储单元的转移过程。
在一种具体实施方式中,源存储单元向所述第一缓冲单元1021发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元1022发送目的数据的通信接口相同,则步骤S120可以在步骤S110之后执行。
不妨设源存储单元向第一缓冲单元1021发送源数据的通信接口以及目的存储单元向第二缓冲单元1022发送目的数据的通信接口均为图2示出的高速缓存接口110。
可选地,源存储单元和目的存储单元可以为均与高速缓存接口110连接的不同存储单元,例如,源存储单元可以为高速缓存存储器116,目的存储单元可以为设备内存120;可以理解,源存储单元与目的存储单元也可以互换,即源存储单元可以为设备内存120,目的存储单元可以为高速缓存存储器116。本申请实施例提供的数据交换方法的目标在于实现两处数据的交换,因此,对于欲交换的两处数据分别所在的载体,可以随机将其中一个载体作为源存储单元,另一个载体自然成为目的存储单元。
可选地,源存储单元和目的存储单元也可以为同一存储单元,即数据交换可以是实现同一存储单元的不同位置的数据的交换,例如源存储单元和目的存储单元均可以为高速缓存存储器116。
向目的存储单元发送目的地址读请求的目的在于使目的存储单元返回目的数据,同理,向源存储单元发送源地址读请求的目的在于使源存储单元返回源数据。在源存储单元传输数据的通信接口与目的存储单元传输数据的通信接口相同的情况下,若目的存储单元返回目的数据与源存储单元返回源数据并行进行,则会交织占用同一通信接口,从而导致传输效率变低,因此,目的存储单元返回目的数据与源存储单元返回源数据不在同一时间段进行,利于提高传输效率。
为了便于描述,不妨以源存储单元是设备内存120,目的存储单元是高速缓存存储器116为例,对通信接口相同(均为高速缓存接口110)的情况进行说明:
源读地址逻辑生成电路104生成多个源地址读请求,GPU将多个源地址读请求均发送给源存储单元:设备内存120。设备内存120对于每个源地址读请求,均可以获取到对应的源数据,并将源数据经高速缓存接口110发送给第一缓冲单元1021。
对于有序模式,GPU将多个源地址读请求均发送给设备内存120后,便可以确定源数据能够传输到第一缓存单元;对于无序模式,则需要在第一缓存单元接收到多个源地址读请求分别对应的源数据,才可以确定源数据能够传输到第一缓存单元。
目的读地址逻辑生成电路107生成多个目的地址读请求,GPU将多个目的地址读请求均发送给目的存储单元:高速缓存存储器116。高速缓存存储器116对于每个目的地址读请求,均可以获取到对应的目的数据,并将目的数据经高速缓存接口110发送给第二缓冲单元1022。
对于有序模式,GPU将多个目的地址读请求均发送给高速缓存存储器116后,便可以确定目的数据能够传输到第二缓存单元;对于无序模式,则需要在第二缓存单元接收到多个目的地址读请求分别对应的目的数据,才可以确定目的数据能够传输到第二缓存单元。
在确定目的数据能够传输到第二缓存单元后,每当一个源数据被写入第一缓存单元,GPU便可以利用目的写地址逻辑生成电路106生成对应的目的地址写请求,该目的地址写请求中包括位于目的存储单元:高速缓存存储器116的去向地址,从而将来自于源存储单元:设备内存120的源数据经第一缓存单元缓存,传输至目的存储单元:高速缓存存储器116。
在确定源数据能够传输到第一缓存单元后,每当一个目的数据被写入第二缓存单元,GPU便可以利用源写地址逻辑生成电路105生成对应的源地址写请求,该源地址写请求中包括位于源存储单元:设备内存120的去向地址,从而将来自于目的存储单元:高速缓存存储器116的源数据经第二缓存单元缓存,传输至源存储单元:设备内存120。
在另一种具体实施方式中,所述源存储单元向所述第一缓冲单元1021发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元1022发送目的数据的通信接口不相同,则步骤S120可以与步骤S110并行执行。
不妨设源存储单元向第一缓冲单元1021发送源数据的通信接口为图2示出的GDS接口108,目的存储单元向第二缓冲单元1022发送目的数据的通信接口为高速缓存接口110。
在源存储单元传输数据的通信接口与目的存储单元传输数据的通信接口不相同的情况下,目的存储单元返回目的数据与源存储单元返回源数据并行进行互不干扰,都能维持较高的传输速率,从而提高了数据传输的效率。
为了便于描述,不妨以源存储单元是GDS存储器112,目的存储单元是高速缓存存储器116为例,对通信接口不同的情况进行说明:
源读地址逻辑生成电路104生成多个源地址读请求,GPU将多个源地址读请求均发送给源存储单元:GDS存储器112。GDS存储器112对于每个源地址读请求,均可以获取到对应的源数据,并将源数据经GDS接口108发送给第一缓冲单元1021。
与此同时,目的读地址逻辑生成电路107生成多个目的地址读请求,GPU将多个目的地址读请求均发送给目的存储单元:高速缓存存储器116。高速缓存存储器116对于每个目的地址读请求,均可以获取到对应的目的数据,并将目的数据经高速缓存接口110发送给第二缓冲单元1022。
在确定目的数据能够传输到第二缓存单元,且确定源数据能够传输到第一缓存单元后,每当一个源数据被写入第一缓存单元,GPU便可以利用目的写地址逻辑生成电路106生成对应的目的地址写请求,该目的地址写请求中包括位于目的存储单元:高速缓存存储器116的去向地址,从而将来自于源存储单元:GDS存储器112的源数据经第一缓存单元缓存,传输至目的存储单元:高速缓存存储器116。
与此同时,每当一个目的数据被写入第二缓存单元,GPU便可以利用源写地址逻辑生成电路105生成对应的源地址写请求,该源地址写请求中包括位于源存储单元:GDS存储器112的去向地址,从而将来自于目的存储单元:高速缓存存储器116的源数据经第二缓存单元缓存,传输至源存储单元:GDS存储器112。
请参见图6,图6示出了本申请实施例提供的数据交换装置,所述装置300包括:
源读请求生成模块310,用于生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元。
目的读请求生成模块320,用于生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元。
数据传输确定模块330,用于确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;
写请求生成模块340,用于根据所述环形缓冲单元收到的数据,生成对应的地址写请求,其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元收到的数据所对应的去向地址位于所述源存储单元;
数据发送模块350,用于利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
可选地,在一种具体实施方式中,写请求生成模块340,具体用于根据所述第一缓冲单元收到的源数据,生成对应的目的地址写请求,其中,目的地址写请求包括对应的源数据的去向地址。
数据发送模块350,具体用于利用所述目的地址写请求,将对应的所述源数据向所述目的存储单元的所述去向地址发送。
可选地,在一种具体实施方式中,写请求生成模块340,具体用于根据所述第二缓冲单元收到的目的数据,生成对应的源地址写请求,其中,源地址写请求包括对应的目的数据的去向地址。
数据发送模块350,具体用于利用所述源地址写请求,将对应的所述目的数据向所述源存储单元的所述去向地址发送。
可选地,在一种具体实施方式中,数据交换方法在有序模式下进行,数据传输确定模块330,具体用于确定所述至少一个源地址读请求均向所述源存储单元发送,且所述至少一个目的地址读请求均向所述目的存储单元发送。
可选地,在一种具体实施方式中,所述数据交换方法在无序模式下进行,数据传输确定模块330,具体用于确定所述源数据均传输至所述第一缓冲单元,且所述目的数据均传输至所述第二缓冲单元。
图6示出的数据交换装置与图3示出的数据交换方法相对应,在此便不做赘述。
本申请实施例提供一种处理器,处理器的硬件流程图如图2所示,处理器包括环形缓冲单元、源存储单元、目的存储单元、源读地址逻辑生成电路以及目的读地址逻辑生成电路,所述源读地址逻辑生成电路与所述源存储单元连接,所述目的读地址逻辑生成电路与所述目的存储单元连接,所述环形缓冲单元包括第一缓冲单元和第二缓冲单元,所述源存储单元通过对应的通信接口与所述第一缓冲单元和第二缓冲单元连接,所述目的存储单元通过对应的通信接口与所述第一缓冲单元和所述第二缓冲单元连接,所述处理器用于通过所述第一缓冲单元和第二缓冲单元交换源存储单元与目的存储单元的数据;所述源读地址逻辑生成电路用于生成至少一个源地址读请求,并向所述源存储单元发送所述至少一个源地址读请求,以便所述源存储单元将每个源地址读请求对应的源数据返回给所述第一缓冲单元;所述目的读地址逻辑生成电路用于生成至少一个目的地址读请求,并向所述目的存储单元发送所述至少一个目的地址读请求,以便所述目的存储单元将每个目的地址读请求对应的目的数据返回给所述第二缓冲单元;所述处理器用于确定所述源数据能传输到所述第一缓冲单元,且所述目的数据能传输到所述第二缓冲单元;所述处理器用于根据所述环形缓冲单元收到的数据,生成对应的地址写请求,其中,所述地址写请求包括对应的数据的去向地址,所述第一缓冲单元收到的数据所对应的去向地址位于所述目的存储单元,所述第二缓冲单元收到的数据所对应的去向地址位于所述源存储单元;所述处理器用于利用所述地址写请求,将对应的所述数据向对应的存储单元的所述去向地址发送。
可选地,还包括目的写地址逻辑生成电路,所述目的写地址逻辑生成电路与所述第一缓冲单元连接;所述目的写地址逻辑生成电路用于根据所述第一缓冲单元收到的源数据,生成对应的目的地址写请求,其中,目的地址写请求包括对应的源数据的去向地址;所述第一缓冲单元用于利用所述目的地址写请求,将对应的所述源数据向所述目的存储单元的所述去向地址发送。
可选地,还包括源写地址逻辑生成电路,所述源写地址逻辑生成电路与所述第二缓冲单元连接;所述源写地址逻辑生成电路用于根据所述第二缓冲单元收到的目的数据,生成对应的源地址写请求,其中,源地址写请求包括对应的目的数据的去向地址;所述第二缓冲单元用于利用所述源地址写请求,将对应的所述目的数据向所述源存储单元的所述去向地址发送。
可选地,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口相同;所述源存储单元为全局数据共享GDS存储器,所述目的存储单元为GDS存储器;或所述源存储单元为高速缓存存储器、设备内存中的任一个,所述目的存储单元为所述高速缓存存储器、所述设备内存中的任一个。
可选地,所述源存储单元向所述第一缓冲单元发送源数据的通信接口与所述目的存储单元向所述第二缓冲单元发送目的数据的通信接口不相同;所述源存储单元为所述GDS存储器,所述目的存储单元为所述高速缓存存储器、所述设备内存中的任一个;或所述源存储单元为高速缓存存储器、设备内存中的任一个,所述目的存储单元为所述GDS存储器。
可选地,所述数据交换方法在有序模式下进行,所述数据交换方法在有序模式下进行;所述源读地址逻辑生成电路用于确定所述至少一个源地址读请求均向所述源存储单元发送;所述目的读地址逻辑生成电路用于确定所述至少一个目的地址读请求均向所述目的存储单元发送。
可选地,所述数据交换方法在无序模式下进行;所述第一缓冲单元用于确定所述源数据均传输至所述第一缓冲单元;所述第二缓冲单元用于确定所述目的数据均传输至所述第二缓冲单元。
应当说明的是,处理器所执行的动作与上述各实施例一致,此处不再赘述。
图7为本申请实施例的计算机系统的结构示意图,计算机系统可以由硬件子系统和软件子系统组成。如图7所示,该计算机系统包括处理器601、存储器(memory)602和总线603;其中,所述处理器601、存储器602均通过所述总线603完成相互间的通信;所述处理器601用于调用所述存储器602中的程序指令,进行图像和图形相关运算工作。其中,处理器601进行数据交换的方法与上述实施例一致,此处不再赘述。
可选地,处理器601可以为图形处理器,也可以是中央处理器(CentralProcessing Unit,CPU)、加速处理器(Accelerated Processing Unit)等,也还可以是其他类型的处理器,如网络处理器(Network Processor,NP)、应用处理器,当然在某些产品中,应用处理器就是CPU,本申请实施例提供的处理器601可以应用于图形处理应用场景,也可以用于深度计算等运算场景。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。