数据拷贝方法、直接内存访问控制器及计算机系统与流程

文档序号:12597091阅读:304来源:国知局
数据拷贝方法、直接内存访问控制器及计算机系统与流程

本发明涉及计算机领域,尤其涉及一种数据拷贝方法、直接内存访问控制器及计算机系统。



背景技术:

计算机系统为运行的各个进程分配了缓冲区(buffer),各个进程在运行过程中访问各自的buffer,从各自的buffer中读出数据或写入数据。

然而,同一个数据可能会被不同的进程访问,此时计算机系统需要将一个进程的buffer中存储的数据拷贝至另一个进程的buffer中,从而使得另一个进程通过访问自己的buffer来获取该数据,具体地,由中央处理单元(Center Process Unit,简称CPU)执行上述拷贝操作。

由于在任意两个进程的buffer之间拷贝数据需CPU参与,则随着计算机系统实现的功能越来越多,各个进程之间的交互越来越频繁,则上述对数据的拷贝使得CPU的占用率较高,从而影响计算机系统的工作性能。



技术实现要素:

本发明提供一种数据拷贝方法、直接内存访问控制器及计算机系统,以提高计算机的工作性能。

第一方面,本发明实施例提供一种数据拷贝方法,包括:

直接内存访问DMA控制器通过加速一致性接口ACP从目标数据的源物理地址对应的存储空间读取所述目标数据;所述源物理地址对应的存储空间包括第一缓冲区;

所述DMA控制器通过所述ACP将所述目标数据存储至所述目标数据的目的物理地址对应的存储空间;所述目的物理地址对应的存储空间包括第二缓冲区。

根据第一方面,在第一方面的第一种可能实现的方式中,所述DMA控 制器通过ACP从目标数据的源物理地址对应的存储空间读取所述目标数据,包括:

所述DMA控制器向内存管理单元MMU发送所述目标数据的源虚拟地址,使得所述MMU将所述源虚拟地址转换为所述源物理地址,并通过所述ACP向缓存控制器发送所述源物理地址;

所述DMA控制器接收所述缓存控制器依次通过所述ACP和所述MMU返回的所述目标数据;所述目标数据为所述缓存控制器从所述第一缓冲区中读取的所述源物理地址的存储空间存储的数据;或者所述目标数据为所述缓存控制器从所述第一缓冲区对应的输入输出IO设备或存储设备中读取的所述源物理地址的存储空间存储的数据。

根据第一方面的第一种可能实现的方式,在第二种可能实现的方式中,所述DMA控制器通过所述ACP将所述目标数据存储至所述目标数据的目的物理地址对应的存储空间,包括:

所述DMA控制器向所述MMU发送所述目标数据和所述目标数据的目的虚拟地址,使得所述MMU将所述目的虚拟地址转换为所述目的物理地址,并通过所述ACP向所述缓存控制器发送所述目标数据和所述目的物理地址;所述目标数据和所述目的物理地址用于使得所述缓存控制器将所述目标数据写入所述第二缓冲区中所述目的物理地址的存储空间中,或者,将所述目标数据写入所述第二缓存区对应的IO设备或存储设备中的所述目的物理地址的存储空间。

根据第一方面的第二种可能实现的方式,在第三种可能实现的方式中,所述DMA控制器向所述MMU发送目标数据的源虚拟地址之前,所述方法还包括:

所述DMA控制器接收中央处理器CPU发送的传输通道的配置信息;所述配置信息包括:所述源虚拟地址和所述目的虚拟地址;所述传输通道为所述目标数据对应的所述DMA控制器中的数据传输通道;

所述DMA控制器将所述传输通道的源地址配置为所述源虚拟地址;

所述DMA控制器将所述传输通道的目的地址配置为所述目的虚拟地址。

第二方面,本发明实施例提供一种直接内存访问DMA控制器,包括:

读取模块,用于通过加速一致性接口ACP从目标数据的源物理地址对应 的存储空间读取所述目标数据;所述源物理地址对应的存储空间包括第一缓冲区;

写入模块,用于通过所述ACP将所述目标数据存储至所述目标数据的目的物理地址对应的存储空间;所述目的物理地址对应的存储空间包括第二缓冲区。

根据第二方面,在第二方面的第一种可能实现的方式中,所述DMA控制器还包括:

发送模块,用于向内存管理单元MMU发送所述目标数据的源虚拟地址,使得所述MMU将所述源虚拟地址转换为所述源物理地址,并通过所述ACP向缓存控制器发送所述源物理地址;

接收模块,用于接收所述缓存控制器依次通过所述ACP和所述MMU返回的所述目标数据;所述目标数据为所述缓存控制器从所述第一缓冲区中读取的所述源物理地址的存储空间存储的数据;或者所述目标数据为所述缓存控制器从所述第一缓冲区对应的输入输出IO设备或存储设备中读取的所述源物理地址的存储空间存储的数据。

根据第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述发送模块,还用于向所述MMU发送所述目标数据和所述目标数据的目的虚拟地址,使得所述MMU将所述目的虚拟地址转换为所述目的物理地址,并通过所述ACP向所述缓存控制器发送所述目标数据和所述目的物理地址;所述目标数据和所述目的物理地址用于使得所述缓存控制器将所述目标数据写入所述第二缓冲区中所述目的物理地址的存储空间中,或者,将所述目标数据写入所述第二缓存区对应的IO设备或存储设备中的所述目的物理地址的存储空间。

根据第二方面的第二种可能实现的方式,在第三种可能实现的方式中,所述接收模块,还用于在所述发送模块向所述MMU发送所述目标数据的所述源虚拟地址之前,接收中央处理器CPU发送的传输通道的配置信息;所述配置信息包括:所述源虚拟地址和所述目的虚拟地址;所述传输通道为所述目标数据对应的所述DMA控制器中的数据传输通道;

所述DMA控制器,还包括:

配置模块,用于将所述传输通道的源地址配置为所述源虚拟地址,将所 述传输通道的目的地址配置为所述目的虚拟地址。

第三方面,本发明实施例还提供一种计算机系统,包括:直接内存访问DMA控制器、加速一致性接口ACP及缓冲存储器;所述DMA控制器通过所述ACP与所述缓冲存储器连接;所述缓冲存储器包括第一缓冲区和第二缓冲区;所述DMA控制器为上述任一所述的DMA控制器。

本发明实施例提供的数据拷贝方法,DMA控制器通过ACP从第一缓冲区中目标数据的源物理地址对应的存储空间读取该目标数据,继而通过ACP将该目标数据存储至第二缓冲区中该目标数据的目标物理地址对应的存储空间,完成第一缓冲区与第二缓冲区间数据的拷贝,而无需CPU执行数据拷贝,降低CPU的占用率。

附图说明

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

图1为本发明的一种数据拷贝方法应用的计算机系统示意图;

图2为本发明实施例一的数据拷贝方法的流程图;

图3为本发明的另一种数据拷贝方法应用的计算机系统示意图;

图4为本发明实施例二提供的数据拷贝方法的流程图;

图5为本发明实施例三提供的数据拷贝方法的流程图;

图6为本发明实施例四提供的DMA控制器的结构示意图;

图7为本发明实施例五提供的计算机系统的结构示意图。

具体实施方式

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

图1为本发明的一种数据拷贝方法应用的计算机系统示意图。如图1所示,计算机系统100包括中央处理单元(Center Process Unit,简称CPU)101,直接内存访问(Direct Memory Access,简称DMA)控制器102、输入输出(Input Output,简称IO)设备103及存储设备104。其中,该存储设备104可包括:双倍速率同步动态随机存储器(Dual Date Rate Synchronous Dynamic Random Access Memory,简称DDR)105、随机存取存储器(Random Access Memory,简称RAM)106等。其中,CPU 101包括内核107和高速缓冲存储器(Cache Memory,简称CACHE)108。该高速缓存存储器108中可包括至少两个缓冲区109。DMA控制器102可与CPU的高速缓冲存储器108中的缓冲区109进行通信。CPU 101可通过总线110访问上述存储设备104和IO设备103。DMA控制器102可通过加速一致性接口(Accelerator Coherency Port,简称ACP)111与高速缓冲存储器108中的缓冲区109进行通信。图2为本发明实施例一的数据拷贝方法的流程图。如图2所示,该数据拷贝方法可包括:

S201、DMA控制器通过ACP从目标数据的源物理地址对应的存储空间读取该目标数据;该源物理地址对应的存储空间包括第一缓冲区。

S202、该DMA控制器通过该ACP将该目标数据存储至该目标数据的目的物理地址对应的存储空间;该目的物理地址对应的存储空间包括第二缓冲区。

具体地,该第一缓冲区可以为第一进程对应的缓冲区;该第二缓冲区可以为第二进程对应的缓冲区。该目标数据的源物理地址可以为该源物理地址对应的存储空间中存储该目标数据的地址。该源物理地址对应的存储空间包括第一缓冲区,该目标数据的源物理地址可以为该第一缓冲区中存储该目标数据的地址。该目标数据的目的物理地址可以为该目的物理地址对应的存储空间中该目标数据的待存储地址。该目的物理地址对应的存储空间可包括第二缓冲区,该目标数据的目的物理地址可为该第二缓冲区中该目标数据的待存储地址。

该目标数据可包括至少一个数据,若该目标数据包括一个数据,则该目标数据的源物理地址和该目标数据的目的物理地址可分别包括一个地址;若该目标数据包括至少两个数据,则该目标数据的源物理地址可包括至少两个 地址,分别为该至少两个数据的中各数据对应的存储地址;该目标数据的物理地址也可包括至少两个地址,分别为该至少两个数据中各数据对应的待存储地址。

举例来说,若进程1的buffer中的数据需要被进程2所访问,那么需要将该进程1的buffer中的数据,拷贝至进程2的buffer。该进程1的buffer中的待拷贝数据即为该目标数据,该目标数据的源物理地址可以为进程1的buffer中存储该目标数据的存储空间对应的地址。该目标数据的目的物理地址可以为进程2的buffer中该目标数据对应的待存储空间对应的地址。

若进程1的buffer中1个数据需要被拷贝至进程2的buffer中,那么该进程1的buffer中的该1个数据即为该目标数据。若该1个目标数据存储在进程1的buffer中的地址0000对应的存储空间中,那么该目标数据的源物理地址即为地址0000。若将该1个数据拷贝至进程2的buffer中地址2000对应的存储空间,则该目标数据的目的物理地址即为地址2000。

若进程1的buffer中有17个数据需要被拷贝至进程2的buffer中,那么该进程1的buffer中的该17个数据即为该目标数据。若该17个目标数据分别存储在进程1的buffer中的地址0000~0011对应的存储空间中,那么该目标数据的源物理地址即为地址0000~0011。若将该17个数据分别拷贝至进程2的buffer中地址2000~2011对应的存储空间,则该目标数据的目的物理地址即为地址2000~2011。

由于在进行数据拷贝之前,计算机系统中运行的各进程的代码均是已知的,因此在该各进程对应的缓冲区间进行数据拷贝,该各进程对应的缓冲区的地址便为已知的。该目标数据的源物理地址和该目标数据的目的物理地址可以是根据已知的该各进程对应的缓冲区的地址确定的。

上述S201中DMA控制器通过ACP从目标数据的源物理地址对应的存储空间读取该目标数据,例如可以是:该DMA控制器通过ACP将包括该目标数据的源物理地址的读数据请求消息发送至缓存控制器中,使得该缓存控制器从该源物理地址对应的存储空间读取该目标数据,并将该目标数据通过该ACP返回至该DMA控制器。

上述S202该DMA控制器通过该ACP将该目标数据存储至该目标数据的目的物理地址对应的存储空间,可以是:该DMA控制器通过该ACP将包括该 目标数据和该目标数据的目的物理地址的写数据请求消息发送至该缓存控制器,使得该缓存控制器将该目标数据存储至该目标数据的目的物理地址对应的存储空间。

本发明实施例提供的数据拷贝方法,DMA控制器通过ACP从第一缓冲区中目标数据的源物理地址对应的存储空间读取该目标数据,继而通过ACP将该目标数据存储至第二缓冲区中该目标数据的目标物理地址对应的存储空间,完成第一缓冲区与第二缓冲区间数据的拷贝,而无需CPU执行数据拷贝,降低CPU的占用率。

实施例二

本发明实施例二还提供一种数据拷贝方法。图3为本发明的另一种数据拷贝方法应用的计算机系统示意图。该图3所示的计算机系统100在上述图1的基础上,还可包括:内存管理单元(Memory Management Unit,简称MMU)301。DMA控制器102可与MMU 301连接,MMU 301可通过ACP 111与高速缓冲存储器108中的缓冲区109进行通信。CACHE 108还可包括缓存控制器302,以对CACHE 108中的缓冲区109的读写进行控制。

图4为本发明实施例二提供的数据拷贝方法的流程图。如图4所示,该方法在上述实施例一的基础上,其中S201的DMA控制器通过ACP从目标数据的源物理地址对应的存储空间读取该目标数据可包括:

S401、该DMA控制器向MMU发送该目标数据的源虚拟地址,使得该MMU将该源虚拟地址转换为该源物理地址,并通过该ACP向缓存控制器发送该源物理地址。

S402、该DMA控制器接收该缓存控制器依次通过该ACP和该MMU返回的该目标数据;该目标数据为该缓存控制器从该第一缓冲区中读取的该源物理地址的存储空间存储的数据;或者该目标数据为该缓存控制器从该第一缓冲区对应的IO设备或存储设备中读取的该源物理地址的存储空间存储的数据。

具体来说,缓存控制器接收到DMA控制器依次通过MMU及ACP发送的该目标数据的该源物理地址后,会判断该源物理地址是否在该第一缓冲区中命中。该缓存控制器判断该源物理地址是否在该第一缓冲区中命中,可以是判断该第一缓冲区中是否具有该源物理地址的存储空间;若该第一缓冲区 中具有该源物理地址的存储空间,则命中,反之,则不命中。若该源物理地址在该第一缓冲区命中,则该缓存控制器从该第一缓冲区中该源物理地址的存储空间读取该目标数据。若该源物理地址在该第一缓冲区不命中,则该缓存控制器从该第一缓冲区对应的IO设备或存储设备中的该源物理地址的存储空间读取该目标数据。

需要说明的是,该MMU通过该ACP向该缓存控制器发送该源物理地址之前,还需根据该源物理地址判断该源物理地址的缓存属性信息为可缓存属性(cacheable)还是不可缓存属性(non-cacheable)。若该源物理地址的缓存属性信息为可缓存属性,则该MMU通过该ACP向该缓存控制器发送该源物理地址。若该源物理地址的缓存属性信息为不可缓存属性,则该MMU可直接将该源物理地址发送至该第一缓冲区对应的IO设备或存储设备。

可选的,上述S202中该DMA控制器通过该ACP将该目标数据存储至该目标数据的目的物理地址对应的存储空间可包括:

S403、该DMA控制器向该MMU发送该目标数据和该目标数据的目的虚拟地址,使得该MMU将该目的虚拟地址转换为该目的物理地址,并通过该ACP向该缓存控制器发送该目标数据和该目的物理地址;该目标数据和该目的物理地址用于使得该缓存控制器将该目标数据写入该第二缓冲区中该目的物理地址的存储空间中,或者将该目标数据写入该第二缓存区对应的IO设备或存储设备中的该目的物理地址的存储空间。

具体地,该缓存控制器在接收到DMA控制器依次通过该MMU及ACP发送的该目标物理地址后,会判断该目的物理地址是否在该第二缓冲区中命中。该缓存控制器判断该目的物理地址是否在该第二缓冲区中命中,可以是判断该第二缓冲区中是否具有该目的物理地址的存储空间;若该第二缓冲区中具有该目的物理地址的存储空间,则命中;反之,则不命中。若该目的物理地址在该第二缓冲区命中,则该缓存控制器可将该目标数据写入该第二缓冲区中该目的物理地址的存储空间中;若该目的物理地址在该第二缓冲区不命中,则该缓存控制器可将该目标数据写入该第二缓存区对应的IO设备或存储设备中的该目的物理地址的存储空间。

需要说明的是,该MMU通过该ACP向该缓存控制器发送该目的物理地址之前,还需根据该目的物理地址判断该目的物理地址的缓存属性信息为可 缓存属性还是不可缓存属性。若该目的物理地址的缓存属性信息为可缓存属性,则该MMU通过该ACP向该缓存控制器发送该目标数据和该目的物理地址。若该目的物理地址的缓存属性信息为不可缓存属性,则该MMU可直接将该目标数据和该目的物理地址直接发送至该第二缓冲区对应的IO设备或存储设备。

该源物理地址和该目的物理地址的缓存属性信息可以是由CPU的内核所配置的。

可选的,上述MMU可以是根据该源虚拟地址,及源虚拟地址与物理地址的对应关系,确定该源虚拟地址对应的物理地址即为该源物理地址。该MMU可以是根据该目的虚拟地址,及目的虚拟地址与物理地址的对应关系,确定该目的虚拟地址对应的物理地址即为该目的物理地址。若该目标数据包括至少一个数据,则该源虚拟地址中至少一个地址可以是连续的;该源虚拟地址中至少一个地址具有一个物理地址,因此,该源物理地址也可包括至少一个地址,该源物理地址的至少一个地址可以是不连续的。

该目的虚拟地址中该至少一个地址也可以为连续的。该目的虚拟地址中至少一个地址具有一个物理地址,因此,该目的物理地址也可包括至少一个地址,该目的物理地址的至少一个地址可以是不连续的。

若该目标数据包括至少一个数据,那么该DMA控制器可通过MMU将该目标数据的该源虚拟地址中连续的至少一个地址,转换为,包括不连续的至少一个地址的源物理地址;该DMA控制器还可通过MMU将该目标数据的该目的虚拟地址中连续的至少一个地址,转换为,包括不连续的至少一个地址的目的物理地址。也就是说,本实施例中DMA控制器可根据连续的虚拟地址依次通过MMU、ACP,实现不连续即碎片化的物理地址的存储空间之间的数据拷贝。

可选的,S401中该DMA控制器向MMU发送该目标数据的源虚拟地址之前,该方法还可包括:

S401a、该DMA控制器接收CPU发送的传输通道的配置信息;该配置信息包括该源虚拟地址和该目的虚拟地址。

S401b、该DMA控制器将该传输通道的源地址配置为该源虚拟地址。

S401c、该DMA控制器将该传输通道的目的地址配置为目的虚拟地址。

具体地,该目标数据可包括至少一个数据,每个数据可具有对应的源地址和目的地址。该目标数据的该源虚拟地址可包括至少一个地址,该目标数据的该目的虚拟地址也可包括至少一个地址。在该DMA控制器中该目标数据中的每个数据具有一个传输通道,因此该目标数据对应的该DMA控制器中的传输通道可包括至少一个通道。该DMA控制器例如可以是根据该源虚拟地址的至少一个地址,将该至少一个通道中每个通道的源地址配置为该源虚拟地址的至少一个地址中每个数据对应的源地址。该DMA控制器例如可以是根据该目的虚拟地址的至少一个地址,将该每个通道的目的地址配置为该目的虚拟地址的至少一个地址中该每个数据对应的目的地址。该不同通道分别用于传输该目标数据中不同数据,该至少一个通道中不同通道具有不同的源地址和不同的目的地址。

可选的,该配置信息还可包括该传输通道中各通道的传输数据字节数、传输位宽、突发(BURST)长度等。

该DMA控制器还根据该配置信息中的该传输通道中各通道的传输数据字节数、传输位宽、突发长度等,分别对该传输通道的至少一个通道中各通道的传输字节数、传输位宽以及突长度等进行配置。

需要说明的是,该DMA控制器根据CPU发送的配置信息对通道进行配置的过程可以是在该DMA控制器未启动的状态执行的。也就是说,该DMA控制器在根据CPU发送的配置信息中的各参数对通道配置完成后,还需启动DMA控制器,以使得计算机系统中运行的各进行需要拷贝目标数据时该CPU向该DMA控制器发送工作指令,从而使得该DMA控制器向MMU发送该源虚拟地址,继而通过ACP将转换后的源物理地址发送至第一缓冲区从而读取该目标数据。

本发明实施例二的数据拷贝方法,DMA控制器可根据连续的虚拟地址依次通过MMU、ACP,实现不连续,即碎片化的物理地址的存储空间之间的数据拷贝。同时,DMA控制器进行数据拷贝的过程中,无论是读取数据还是存储数据,都需经过缓冲区,从而实现缓存一致性的存储器访问,无需CPU频繁的执行调用指令,进一步的降低CPU的占用率,保证计算机系统的性能,降低功耗。

进一步的,计算机系统运行的进程可能是运行在用户态,也可能运行在 内核态。若需要进行数据交互的进程运行在内核态,则CPU针对运行在内核态的进程,为DMA控制器配置的源地址和目的地址均为源物理地址和目的物理地址,使得该DMA控制器执行通过ACP进行数据拷贝;但若需要进行数据交互的进程运行在用户态,则CPU针对运行在用户态的进程,为DMA控制器的传输通道配置的源地址和目的地址均为源虚拟地址和目的虚拟地址,此时DMA控制器是不能根据源虚拟地址和目的虚拟地址对目标数据进行搬移或拷贝,而需要将该源虚拟地址和该目的虚拟地址发送至MMU,通过MMU转换为源物理地址和目的物理地址,继而通过ACP进行数据拷贝。

实施例三

本发明实施例三还提供一种数据拷贝方法。图5为本发明实施例三提供的数据拷贝方法的流程图。如图5所示,该数据拷贝方法可包括:

S501、DMA控制器接收CPU的内核发送的传输通道的配置信息,该配置信息包括目标数据的源虚拟地址、该目标数据的目的虚拟地址;该传输通道为该目标数据对应的该DMA控制器中的数据传输通道。

S502、DMA控制器将该传输通道的源地址配置为该源虚拟地址,将该传输通道的目的地址配置为该目的虚拟地址。

其中,该配置信息还可包括该传输通道的传输数据字节数、传输数据位宽、突发长度。因此,该DMA控制器还分别将该传输通道的传输数据字节数、传输数据位宽及突发长度,配置为该配置信息中的该传输数据字节数、传输数据位宽及该突发长度。

需要说明的是,该DMA控制器根据上述S502对传输通道配置完成后,启动接收CPU发送的数据拷贝指令。

S503、DMA控制器根据该传输通道的源地址确定该源虚拟地址,并将该源虚拟地址发送至MMU。

S504、MMU将接收到的该源虚拟地址转换为源物理地址,且确定该源物理地址的存储空间的缓存属性为可缓存属性,则MMU通过ACP将该源物理地址发送至CPU的缓存控制器。

S505、该缓存控制器判断该源物理地址在第一缓冲区中是否命中。

若是,则继续执行S406;若否,则执行S407。

S506、若缓存控制器确定该源物理地址在该第一缓冲区中命中,则该缓 存控制器从该第一缓冲区中该源物理地址的存储空间读取该目标数据。

S507、若该缓存控制器确定该源物理地址在该第一缓冲区中不命中,则该缓存控制器从该第一缓冲区对应的IO设备或存储器中该源物理地址的存储空间读取该目标数据。

S508、该缓存控制器依次通过ACP、MMU将该目标数据传输至DMA控制器。

S509、DMA控制器根据该传输通道的目的地址确定该目的虚拟地址,并将该目标数据和该目的虚拟地址发送至MMU。

S510、MMU将该目的虚拟地址转换为目的物理地址,且确定该目的物理地址为可缓存属性,则MMU将该目的物理地址和该目标数据通过ACP发送至该缓存控制器。

S511、该缓存控制器判断该源物理地址在第二缓冲区中是否命中。

若是,则继续执行S512;若否,则执行S513。

S512、若该缓存控制器确定该源物理地址在该第二缓冲区中命中,则该缓存控制器将该目标数据写入该第二缓冲区中该目的物理地址的存储空间。

S513、若该缓存控制器确定该源物理地址在该第二缓冲区中不命中,则该缓存控制器将该目标数据写入该第二缓冲区对应的IO设备或存储器中该目的物理地址的存储空间。

本发明实施例提供的数据拷贝方法中,在计算机系统中DMA控制器通过ACP从第一缓冲区中目标数据的源物理地址对应的存储空间读取该目标数据,继而通过ACP将该目标数据存储至第二缓冲区中该目标数据的目标物理地址对应的存储空间,完成第一缓冲区与第二缓冲区间数据的拷贝,而无需CPU调用响应的函数进行数据拷贝进而降低了CPU的占用率,提升计算机系统的工作性能。

实施例四

本发明实施例四还提供一种DMA控制器。图6为本发明实施例四提供的DMA控制器的结构示意图。如图6所示,该DMA控制器600可包括:

读取模块601,用于通过ACP从目标数据的源物理地址对应的存储空间读取该目标数据;该源物理地址对应的存储空间包括第一缓冲区。

写入模块602,用于通过该ACP将该目标数据存储至该目标数据的目的 物理地址对应的存储空间;该目的物理地址对应的存储空间包括第二缓冲区。

可选的,该DMA控制器600还包括:

发送模块,用于向MMU发送该目标数据的源虚拟地址,使得该MMU将该源虚拟地址转换为该源物理地址,并通过该ACP向缓存控制器发送该源物理地址。

接收模块,用于接收该缓存控制器依次通过该ACP和该MMU返回的该目标数据;该目标数据为该缓存控制器从该第一缓冲区中读取的该源物理地址的存储空间存储的数据;或者该目标数据为该缓存控制器从该第一缓冲区对应的IO设备或存储设备中读取的该源物理地址的存储空间存储的数据。

可选的,发送模块,还用于向该MMU发送该目标数据和该目标数据的目的虚拟地址,使得该MMU将该目的虚拟地址转换为该目的物理地址,并通过该ACP向该缓存控制器发送该目标数据和该目的物理地址;该目标数据和该目的物理地址用于使得该缓存控制器将该目标数据写入该第二缓冲区中该目的物理地址的存储空间中,或者,将该目标数据写入该第二缓存区对应的IO设备或存储设备中的该目的物理地址的存储空间。

可选的,接收模块,还用于在该发送模块向该MMU发送该目标数据的该源虚拟地址之前,接收该CPU发送的传输通道的配置信息;该配置信息包括:该源虚拟地址和该目的虚拟地址;该传输通道为该目标数据对应的该DMA控制器中的数据传输通道。

该DMA控制器600,还包括:

配置模块,用于将该传输通道的源地址配置为该源虚拟地址,将该传输通道的目的地址配置为该目的虚拟地址。

本发明实施例四提供的DMA控制器可执行上述实施例一至实施例三中任一实施例的数据拷贝方法,其具体的实现过程及有益效果与上述实施例类似,在此不再赘述。

实施例五

本发明实施例五还提供一种计算机系统。图7为本发明实施例五提供的计算机系统的结构示意图。如图7所示,该计算机系统700可包括:DMA控制器701、ACP 702及缓冲存储器703;DMA控制器701通过ACP 702与缓冲存储器703连接;缓冲存储器703包括第一缓冲区704和第二缓冲区705;

DMA控制器701可以为上述实施例四的DMA控制器,可用于执行上述实施例一至实施例三中任一实施例所述的数据拷贝方法

本发明实施例五提供的计算机系统中的DMA控制器可执行上述实施例一至实施例三任一实施例所述的数据拷贝方法,其实现过程及有益效果与上述实施例一至实施例三中类似,在此不再赘述。

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

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

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