一种数据拷贝的方法、装置和系统的制作方法

文档序号:6502921阅读:186来源:国知局
一种数据拷贝的方法、装置和系统的制作方法
【专利摘要】本发明公开了一种数据拷贝的方法、装置和系统,该方法采取控制与第一记录介质、第二记录介质分别对应的第一地址命令总线和第二地址命令总线上的读写时序,即通过第一地址命令总线向第一记录介质发送读命令和通过第二地址命令总线向第二记录介质发送写命令,使得第二记录介质从数据总线上接收第一记录介质发送的数据,从而快速直接地完成数据的拷贝,解决了现有拷贝方法中步骤繁琐、路径冗长的问题,减少了数据拷贝对内存带宽的占用,同时可降低功耗。
【专利说明】一种数据拷贝的方法、装置和系统

【技术领域】
[0001]本发明涉及计算机领域,具体涉及一种数据拷贝的方法、装置和系统。

【背景技术】
[0002]数据拷贝是计算机和其它数据处理系统中一种常见的数据操作,它通常是指将一块连续存放的数据从存储空间中的某个起始物理位置,复制到存储空间中的另一个起始物理位置。
[0003]具体来讲,在通用计算机的程序中,数据拷贝操作通常发生在主存(Main Memory)之中,从主存的源地址连续拷贝一整块数据至主存的目的地址,程序中通常使用的函数为memcpy ()。然而,memcpy ()函数的执行将引发一系列软/硬件操作,以硬件操作为例,一整块数据将分批次的、不停的从内存模组(Dual Inlime Memory Module,简称DIMM)中读取并传入CPU,再由CPU发出Store指令,将刚读入的数据存入内存空间目的地址;如此不停的反复,直至达到被拷贝数据块的边界。
[0004]现有技术中数据拷贝通常或基准的做法是“多次或循环执行load和store指令,直至达到被拷贝数据块的边界”,亦可被称为“Word by Word memory copy”,读出的数据经内存控制器传入CPU,再由CPU发出Store指令,将刚读入的数据存入内存空间的目的地址;如此不停的反复,直至达到被拷贝数据块的边界。
[0005]memcpy ()函数核心部分被编译为多次或循环执行load/store指令,以x86为例:
[0006]mo V eax, [SrcAddress] # 等价于 RISC 中的 load 指令
[0007]mov [DestAddress], eax# 等价于 RISC 中的 store 指令
[0008]或者,
[0009]repz movsl%ds: (%esi), %es: (%edi) # 循环执行 mov 操作
[0010]在对此方法的研究和实践过程中,本发明的发明人发现,被拷贝的数据在内存、内存控制器和CPU之间往复传输,步骤多,长时间占用CPU、内存控制器、访存通道等资源。数据经过内存控制器的访存通道,浪费访存带宽,内存到CPU之间的带宽资源通常比较紧缺,且通常是影响程序运行性能的关键。例如,在SPEC CPU2006测试程序集中,某些程序(如464.h264ref)大量频繁调用memcpy ()函数,此函数运行时间占程序总时间的比例甚至高达 40.9%ο


【发明内容】

[0011]本发明实施例提供一种数据拷贝的方法、装置和系统,以期简化数据拷贝的路径,减少数据拷贝对内存带宽的占用,提高数据拷贝的执行效率,进而提升系统总体性能。
[0012]第一方面,本发明实施例提供一种数据拷贝的方法,包括:
[0013]通过第一地址命令总线向第一记录介质发送读命令,使得所述第一记录介质根据所述读命令进行数据读取,并将读取的数据发送至数据总线;
[0014]通过第二地址命令总线向第二记录介质发送写命令,使得所述第二记录介质根据所述写命令从所述数据总线接收所述数据。
[0015]在第一种可能的实施方式中,结合第一方面,所述第一记录介质发送所述数据至所述数据总线与所述第二记录介质从所述数据总线接收所述数据同步,其中,所述同步是指所述第一记录介质发送所述数据至所述数据总线与所述第二记录介质从所述数据总线接收所述数据的时间差在预设的时间范围内。
[0016]在第二种可能的实施方式中,结合第一方面或第一方面的第一种可能的实施方式,所述第一记录介质和/或第二记录介质为内存模组。
[0017]在第三种可能的实施方式中,结合第一方面或第一方面的第一种可能的实施方式,所述第一记录介质和第二记录介质为同一个内存模组上的内存颗粒。
[0018]第二方面,本发明实施例还提供一种数据拷贝的装置,包括:
[0019]控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令;
[0020]第一地址命令总线,用于传递所述读命令;
[0021]第二地址命令总线,用于传递所述写命令;
[0022]数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质。
[0023]在第一种可能的实施方式中,结合第二方面,所述控制器还用于控制所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据的时间差在预设的时间范围内。
[0024]第三方面,本发明实施例还提供一种数据拷贝的系统,包括:
[0025]控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令;
[0026]第一地址命令总线,用于传递所述读命令;
[0027]第二地址命令总线,用于传递所述写命令;
[0028]数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质;
[0029]第一记录介质,用于接收所述控制器发送的读命令,根据所述读命令进行数据读取,并将读取的数据发送至所述数据总线;
[0030]第二记录介质,用于接收所述控制器发送的写命令,并根据所述写命令从所述数据总线接收所述数据。
[0031]本发明实施例提供的数据拷贝的方法采用由控制器控制与第一记录介质、第二记录介质分别对应的第一地址命令总线和第二地址命令总线上的读写时序,即通过第一地址命令总线向第一记录介质发送读命令和通过第二地址命令总线向第二记录介质发送写命令,使得第二记录介质从数据总线上接收第一记录介质发送的数据,从而快速直接地完成数据的拷贝,解决了现有拷贝方法中步骤繁琐、路径冗长的问题,减少了数据拷贝对内存带宽的影响,同时可降低功耗。

【专利附图】

【附图说明】
[0032]图1是本发明实施例提供的一种数据拷贝方法的流程示意图;
[0033]图2是本发明实施例提供的一种数据拷贝装置的结构示意图。

【具体实施方式】
[0034]本发明实施例提供一种数据拷贝的方法、装置和系统,以期简化数据拷贝的路径,减少数据拷贝对内存带宽的占用,提高数据拷贝的执行效率,进而提升系统总体性能。
[0035]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0036]本发明实施例提供一种数据拷贝的方法,包括:
[0037]通过第一地址命令总线向第一记录介质发送读命令,使得所述第一记录介质根据所述读命令进行数据读取,并将读取的数据发送至数据总线;
[0038]通过第二地址命令总线向第二记录介质发送写命令,使得所述第二记录介质根据所述写命令从所述数据总线接收所述数据。
[0039]需要说明的是,上述各步骤可以由控制器执行,本发明实施例提供的数据拷贝的方法用于“单数据总线、多地址命令总线”的存储拓扑结构当中,即各数据记录介质之间存在一套共享的数据总线,且分别具有各自独立的地址命令总线。
[0040]进一步的,所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据可以同步,即读数据/写数据操作同时驱动/采集一条共享的数据通路,从而实现数据可以在两个记录介质间直接传递,缩短拷贝时间;
[0041]进一步的,第一记录介质,和/或第二记录介质可以为内存模组;或者,
[0042]第一记录介质和第二介质为同一个内存模组上的内存颗粒。
[0043]现有技术中被拷贝的数据在内存、内存控制器和CPU之间往复传输,而并不经过任何处理和计算,每个小块数据复制需要一次读操作内存带宽和一次写操作内存带宽,浪费了访存带宽,而本发明实施例提供的数据拷贝的方法,通过设计“单数据总线、多地址命令总线”的存储拓扑结构,并由控制器分别控制读写时序,即控制所述第一记录介质发送所述数据至所述数据总线与所述第二记录介质从所述数据总线接收所述数据的时间差在预设的时间范围内,使得读/写操作共享一条数据总线,实现了数据在记录介质间的直接传递,原本需要串行执行、且中间有很长间隔的两个操作变成为一个操作,大幅度减少内存带宽的占用,提高了数据拷贝的效率。
[0044]参见图1,具体流程如下:
[0045]S101、控制器通过第一地址命令总线向第一记录介质发送读命令,使得所述第一记录介质根据所述读命令进行数据读取,并将读取的数据发送至数据总线;
[0046]S102、通过第二地址命令总线向第二记录介质发送写命令,使得所述第二记录介质根据所述写命令从所述数据总线接收所述数据;
[0047]需要说明的是,控制器向第一记录介质发送读命令后,可以在确定的时钟周期数后,向第二记录介质发送写命令,使得第一记录介质读操作与第二记录介质写操作同时共享一条数据总线。
[0048]第一记录介质和第二记录介质可以都为内存模组。
[0049]其中,第一地址命令总线连接于控制器与第一记录介质之间,第二地址命令总线连接与控制器与第二记录介质之间,数据总线与控制器连接,同时,数据总线还分别与第一记录介质、第二记录介质连接。因此,本发明实施例在实现数据拷贝时不再需要经历第一内存模组一内存控制器一CPU —内存控制器一第二内存模组这条数据通路,而是通过共享的数据总线将数据从第一内存模组转移至第二内存模组。
[0050]由上可见,本发明实施例提供的数据拷贝的方法采取控制与第一记录介质、第二记录介质分别对应的第一地址命令总线和第二地址命令总线上的读写时序,即通过第一地址命令总线向第一记录介质发送读命令和通过第二地址命令总线向第二记录介质发送写命令,使得第二记录介质从数据总线上接收第一记录介质发送的数据,从而快速直接地完成数据的拷贝,解决了现有拷贝方法中步骤繁琐、路径冗长的问题,减少了数据拷贝对内存带宽的占用,同时可降低功耗。
[0051]本发明实施例还提供一种数据拷贝的装置,包括:
[0052]控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令;
[0053]第一地址命令总线,用于传递所述读命令;
[0054]第二地址命令总线,用于传递所述写命令;
[0055]数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质。
[0056]即本发明实施例数据拷贝装置中的控制器通过所述第一地址命令总线向所述第一记录介质发送读命令,使得所述第一记录介质根据所述读命令进行数据读取,并将读取的数据发送至所述数据总线,并且,所述控制器通过所述第二地址命令总线向第二记录介质发送写命令,使得所述第二记录介质根据所述写命令从所述数据总线接收所述数据。
[0057]进一步的,控制器还可以用于控制所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据的时间差在预设的时间范围内。
[0058]其中,第一记录介质和/或第二记录介质可以为内存模组;或者,第一记录介质和第二记录介质为同一个内存模组上的内存颗粒。
[0059]具体的数据拷贝装置的结构参见图2所示,该装置采用“单数据总线、多地址命令总线”的存储拓扑结构,两个内存模组共享一套数据总线,但分别具有各自独立的地址命令总线,即第一内存模组对应地址命令总线1,第二内存模组对应地址命令总线2。
[0060]内存控制器精确控制两条地址命令总线的时序,可以实现第一内存模组与第二内存模组之间的直接数据传递:内存控制器首先在地址命令总线I上对第一内存模组发出读命令,然后在确定的时钟周期数后,在地址命令总线2上对第二内存模组发出写命令,此时第二内存模组会接收数据总线上的数据。
[0061]由上可见,本发明实施例提供的数据拷贝的装置采用单数据总线和多地址命令总线的存储拓扑结构,即多个地址命令总线分别对应一个记录介质,一套数据总线由记录介质共享,并且控制器控制各条地址命令总线上的读写时序,使得数据由第一记录介质,经共享的数据总线快速直接地转移到第二记录介质上,如此可大幅度减少内存带宽的占用,提高数据拷贝的执行效率,进而提升系统总体性能。
[0062]本发明实施例还提供一种数据拷贝的系统,包括:控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令;
[0063]第一地址命令总线,用于传递所述读命令;
[0064]第二地址命令总线,用于传递所述写命令;
[0065]数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质;
[0066]第一记录介质,用于接收所述控制器发送的读命令,并根据所述读命令进行数据读取,并将读取的数据发送至所述数据总线;
[0067]第二记录介质,用于接收所述控制器发送的写命令,并根据所述写命令从所述数据总线接收所述数据。
[0068]其中,控制器可以同步控制所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据,即控制器控制所述第一记录介质发送数据总线与所述第二记录介质从所述数据总线接收数据的时间差在预设的时间范围内,从而实现数据可以在两个记录介质间直接传递,缩短拷贝时间。
[0069]由上可见,本发明实施例提供的数据拷贝的系统采用单数据总线和多地址命令总线的存储拓扑结构,即多个地址命令总线分别对应一个记录介质,一套数据总线由记录介质共享,并且控制器控制各条地址命令总线上的读写时序,使得数据由第一记录介质,经共享的数据总线快速直接地转移到第二记录介质上,如此可大幅度减少内存带宽的占用,提高数据拷贝的执行效率,进而提升系统总体性能。
[0070]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
[0071]同时,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0072]以上对本发明实施例所提供的数据拷贝的方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种数据拷贝的方法,其特征在于,包括: 通过第一地址命令总线向第一记录介质发送读命令,使得所述第一记录介质根据所述读命令进行数据读取,并将读取的数据发送至数据总线; 通过第二地址命令总线向第二记录介质发送写命令,使得所述第二记录介质根据所述写命令从所述数据总线接收所述数据。
2.根据权利要求1所述的方法,其特征在于,所述第一记录介质发送所述数据至所述数据总线与所述第二记录介质从所述数据总线接收所述数据同步,其中,所述同步是指所述第一记录介质发送所述数据至所述数据总线与所述第二记录介质从所述数据总线接收所述数据的时间差在预设的时间范围内。
3.根据权利要求1所述的方法,其特征在于,所述第一记录介质和/或第二记录介质为内存模组。
4.根据权利要求1所述的方法,其特征在于,所述第一记录介质和第二记录介质为同一个内存模组上的内存颗粒。
5.一种数据拷贝的装置,其特征在于,包括: 控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令; 第一地址命令总线,用于传递所述读命令; 第二地址命令总线,用于传递所述写命令; 数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质。
6.根据权利要求5所述的装置,其特征在于,所述控制器还用于控制所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据的时间差在预设的时间范围内。
7.根据权利要求5所述的装置,其特征在于,所述第一记录介质和/或第二记录介质为内存模组。
8.根据权利要求5所述的装置,其特征在于,所述第一记录介质和第二记录介质为同一个内存模组上的内存颗粒。
9.一种数据拷贝的系统,其特征在于,包括: 控制器,用于向第一记录介质发送读命令,并且向第二记录介质发送写命令; 第一地址命令总线,用于传递所述读命令; 第二地址命令总线,用于传递所述写命令; 数据总线,用于将所述第一记录介质读取的数据传输给所述第二记录介质; 第一记录介质,用于接收所述控制器发送的读命令,根据所述读命令进行数据读取,并将读取的数据发送至所述数据总线; 第二记录介质,用于接收所述控制器发送的写命令,并根据所述写命令从所述数据总线接收所述数据。
10.根据权利要求9所述的系统,其特征在于,所述控制器还用于控制所述第一记录介质发送数据至所述数据总线与所述第二记录介质从所述数据总线接收数据的时间差在预设的时间范围内。
【文档编号】G06F17/30GK104166647SQ201310181769
【公开日】2014年11月26日 申请日期:2013年5月16日 优先权日:2013年5月16日
【发明者】张科, 张立新, 侯锐, 王聪 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1