CN104424102B - 一种数据拷贝方法、设备和*** - Google Patents

一种数据拷贝方法、设备和*** Download PDF

Info

Publication number
CN104424102B
CN104424102B CN201310363325.1A CN201310363325A CN104424102B CN 104424102 B CN104424102 B CN 104424102B CN 201310363325 A CN201310363325 A CN 201310363325A CN 104424102 B CN104424102 B CN 104424102B
Authority
CN
China
Prior art keywords
memory modules
data
request
read
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310363325.1A
Other languages
English (en)
Other versions
CN104424102A (zh
Inventor
张科
张立新
侯锐
王聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310363325.1A priority Critical patent/CN104424102B/zh
Priority to PCT/CN2014/081815 priority patent/WO2015024418A1/zh
Publication of CN104424102A publication Critical patent/CN104424102A/zh
Application granted granted Critical
Publication of CN104424102B publication Critical patent/CN104424102B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种数据拷贝方法、设备和***,涉及计算机领域,能够提高数据拷贝的效率。包括:接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。本发明实施例提供的数据拷贝方法、设备和***,用于数据的拷贝。

Description

一种数据拷贝方法、设备和***
技术领域
本发明涉及计算机领域,尤其涉及一种数据拷贝方法、设备和***。
背景技术
链式内存模组是CPU(Central Processing Unit中央处理器)中多个内存模组以链式连接的组合,内存模组是可以存储数据的内存条,内存模组主要由缓冲芯片和内存颗粒组成,缓冲芯片是连接多个内存模组或连接内存模组与内存控制器并可以转发和处理数据的芯片,如FB-DIMM中AMB(Advanced Memory Buffer,先进内存缓冲器芯片),内存颗粒是可以存储数据的内存芯片。
数据拷贝即数据的复制,是指将一块连续的数据从存储空间中的一个物理位置复制到存储空间中的另一个物理位置。
现有技术中,内存模组间的数据拷贝方法中,将待写入数据、从源地址写入目的地址需要经过多个模块,示例的,假设第一内存模组为源地址,第二内存模组为目的地址,即将第一内存模组中的数据写入第二内存模组中,首先,CPU向第一内存模组发送读请求,经内存控制器控制,读取待写入数据,然后CPU发送写请求,将该待写入数据、存储于第二内存模组中,在此过程中,所述待写入数据的数据通路为第一内存模组、内存控制器、CPU和第二内存模组。由于每个内存模组只能进行消息的转发或待写入数据、的写入,内存模组间数据的消息的传输过程需要内存控制器和CPU参与,所述消息包括待写入数据,因此,存储模组间消息的传输过程经过的数据通路较长,数据拷贝的效率较低。
发明内容
本发明实施例提供了一种数据拷贝方法、设备和***,能够提高数据拷贝的效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据拷贝方法,其特征在于,包括:
接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
结合第一方面,在第一种可实现方式中,所述根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组包括:
根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;
向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;
根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;
向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
结合第一方面、第一种可实现方式,在第二种可实现方式中,所述读请求包含源地址,所述源地址为所述第一内存模组;
所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
结合第一方面、第一或二种可实现方式,在第三种可实现方式中,所述第一内存模组与所述第二内存模组由同一内存控制器控制;
或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
第二方面,提供一种内存模组管理器,包括
接收单元,用于接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
通信单元,用于根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
结合第二方面,在第一种可实现方式中,
所述通信单元具体用于:
根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;
向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;
根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;
向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
结合第二方面、第一种可实现方式,在第二种可实现方式中,所述读请求包含源地址,所述源地址为所述第一内存模组;
所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
结合第二方面、第一或二种可实现方式,在第三种可实现方式中,所述第一内存模组与所述第二内存模组由同一内存控制器控制;
或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
结合第二方面、第一至三种可实现方式,在第四种可实现方式中,所述内存模组管理器为先进内存缓冲器芯片AMB。
第三方面,提供一种内存***,包括:
至少一个内存控制器,用于生成拷贝请求消息;
至少一个内存模组,用于存储数据;
至少一个以上任意所述的内存模组管理器,用于在所述至少一个内存模组之间拷贝数据。
本发明实施例提供的一种数据拷贝方法、设备和***,内存模组管理器不仅可以接收来自于内存控制器的拷贝请求消息,也可以根据拷贝请求消息生成读请求和写请求,并与其他内存模组进行通信,在内存模组之间传输数据从而实现数据拷贝。由于在数据拷贝时实现了内存模组间消息和数据的直接传输,内存模组间消息和数据的传输过程经过的数据通路较短,因此,与现有技术相比,提高了数据拷贝的效率。
附图说明
图1为本发明实施例1提供的一种数据拷贝方法流程图;
图2为本发明实施例1提供的由同一个内存控制器控制的内存模组的结构示例图;
图3为本发明实施例1提供的又一种数据拷贝方法流程图;
图4为本发明实施例1提供的一种由不同内存控制器控制的内存模组的结构示意图;
图5为本发明实施例1提供的一种内存模组管理器结构示意图;
图6为本发明实施例2提供的另一种内存模组管理器结构示意图;
图7为本发明实施例2提供的又一种内存模组管理器结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本发明实施例提供了一种数据拷贝方法,可以应用在内存模组之间的数据拷贝,如图1所示,包括:
步骤101、接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中。
所述拷贝请求消息通常由CPU生成,由内存控制器直接转发给内存模组管理器的。
步骤102、根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
具体的,可以根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。其中,所述读请求包含源地址,所述源地址为所述第一内存模组;所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
这样一来,内存模组管理器不仅可以接收来自于内存控制器的拷贝请求消息,也可以根据拷贝请求消息生成读请求和写请求,并与其他内存模组进行通信,在内存模组之间传输数据从而实现数据拷贝。由于在数据拷贝时实现了内存模组间消息和数据的直接传输,内存模组间消息和数据的传输过程经过的数据通路较短,因此,与现有技术相比,提高了数据拷贝的效率。
需要说明的是,所述第一内存模组与所述第二内存模组可以由同一内存控制器控制;所述第一内存模组与所述第二内存模组也可以由不同内存控制器控制。
实际应用中,内存模组间的数据拷贝都是由程序控制的,通常使用的是库函数中的函数memcpy(),该函数在使用前会声明为“void*memcpy(void*destination,constvoid*source,size_t num);”,其中void*destination为待写入数据的目的地址,constvoid*source为待写入数据的源地址,size_t num为待写入数据的大小,在实际应用场景中,通常是由图2所示的结构来运行数据拷贝函数,完成内存模组间的数据拷贝。
示例的,如图2所示,图2中由同一个内存控制器控制的内存模组的结构由CPU201、内存控制器202、和3个内存模组组成,图2中,内存控制器202分别与CPU201和内存模组203连接,内存模组204分别与内存模组203和内存模组205连接,三个内存模组都包括内存模组管理器和内存颗粒,每个所述内存模组管理器是可以转发和处理数据的芯片。本发明实施例假设每个所述内存模组管理器为AMB。示例的,位于所述内存模组203上的内存模组管理器为第一AMB2031;位于所述内存模组204上的内存模组管理器为第二AMB2041;位于所述内存模组205上的内存模组管理器为第三AMB2051。
本发明实施例提供一种数据拷贝方法,假设图2中的内存模组203为第一内存模组,内存模组205为第二内存模组,以第一AMB2031为例,具体步骤如图3所示,包括:
步骤301、CPU向内存控制器发送拷贝请求消息。
需要说明的是,CPU生成的所述拷贝请求消息具体可以包括一组物理地址和待写入数据的大小,所述拷贝请求消息中待写入数据的大小通常为较大的数据块的大小,如256KB,所述B表示比特(Byte),为信息量单位,二进制数的一位所包含的信息就是1比特,假设该物理地址为8位,其中高4位通常表示内存模组的地址,低4位通常表示内存颗粒的地址。假设CPU501发送的拷贝请求消息为将1011 0110中的128MB的数据写入1110 0101中,其中1011 0110的高4位1011表示图2中的内存模组203的地址,假设内存模组503为第一内存模组,1011 0110的低4位0110表示内存模组203的内存颗粒2032的地址,其中1110 0101的高4位1110表示图3中的内存模组205的地址,假设内存模组205为第二内存模组,1110 0101的低4位0101表示内存模组205的内存颗粒2052的地址,128M表示待写入数据的大小,则CPU201发送的拷贝请求消息为将内存模组203的内存颗粒2032中的大小为128MB的数据写入内存模组205的内存颗粒2052中。
步骤302、内存控制器向第一AMB转发拷贝请求消息。
实际应用中,内存控制器202可以不对所述拷贝请求消息进行处理,根据拷贝请求消息中的物理地址1011 0110的高4位1011直接将该拷贝请求消息发送至内存模组203,由内存模组203的第一AMB2031接收该拷贝请求消息。内存控制器202可以对所述拷贝请求消息进行处理,将一个包含待写入数据的大小通常为较大的数据块的拷贝请求消息中拆分成多个数据块较小的拷贝请求消息,然后再转发给第一AMB。
步骤303、第一AMB根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据。
第一AMB2031接收内存控制器202转发的拷贝请求消息后,可以生成读请求,所述读请求包含源地址,所述源地址为第一内存模组,即所述内存模组203的存储地址,即物理地址1011 0110,既包括内存模组203的地址,即包含物理地址1011 0110的高4位1011,也包含内存模组203中内存颗粒2032的地址,即物理地址1011 0110的低4位0110。需要说明的是,由于需要读取的数据较多,所述读请求通常为连续的多个子请求组成的。
步骤304、第一AMB向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据。
具体的,第一AMB203根据读请求中的物理地址1011 0110的高4位1011与本内存模组的地址进行匹配,确定要读取的数据位于内存模组203中,特别的,由于第一AMB203位于第一内存模组上,即内存模组203上,而读请求又是由第一AMB203生成,所以实际应用中可以不进行所述匹配过程。第一AMB2031确定要读取的数据位于内存模组203中之后,第一AMB2031根据就所述读请求中的源地址,即物理地址10110110的低4位从内存模组203的内存颗粒2032中读取相应的数据。具体的,用读请求中物理地址的低4位0110与本内存模组的内存颗粒的地址进行匹配,若内存模组的内存颗粒2032的地址与所述读请求中的物理地址1011 0110的低4位0110相同,则表明是将内存颗粒2032中的数据读取,然后在内存颗粒2032中读取数据。
步骤305、第一AMB根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中。
所述写请求包含写数据和目的地址,所述写数据为从所述内存模组203中读取的数据,在本实施例中即从内存模组203的内存颗粒2032中读取相应的数据,所述目的地址为第二内存模组,即内存模组205的物理地址。
步骤306、第一AMB向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
第一AMB根据拷贝请求消息中物理地址1110 0101的高4位1110将该写请求发送至第二内存模组,即内存模组205,具体的由内存模组205的第三AMB2051接收所述写请求。由图2可知,在本实施例中,所述写请求由内存模组203经过内存模组204的转发到达内存模组205,在经过内存模组204时,内存模组204的第二AMB2041需要根据写请求中的物理地址1110 0101的高4位1110与内存模组204的地址进行匹配,根据匹配的结果判断所述写请求中的写数据需要写入本内存模组中,其匹配的结果为本内存模组的地址与物理地址11100101的高4位1110不同,则由第二AMB2041将所述写请求发送至下个内存模组中,即内存模组205。
步骤307、第二内存模组根据所述写请求,将从所述第一内存模组中读取的数据写入所述第二内存模组。
具体的,内存模组205的第三AMB2051接收到写请求时,首先需要根据写请求中的物理地址1110 0101的高4位1110与内存模组205的地址进行匹配,根据匹配的结果判断所述写请求中的写数据需要写入本内存模组中,然后根据写请求中包含的物理地址111100101的低4位0101将相应的写数据写入第二内存模组205的内存颗粒2052中。具体点,第三AMB2051再根据所述写请求中的物理地址1110 0101的低4位0101与本内存模组的内存颗粒的地址进行匹配,由于内存模组存在内存颗粒2052的地址与所述写请求中的物理地址11100101的低4位0101相同,则表明需要将写数据写入内存颗粒2052中。
通常的,在写入过程中,以每次1个拷贝单位的粒度将写数据进行写入,由于FB-DIMM有ddr2(double data rate2,双倍速率同步动态随机存储器2)的也有ddr3(doubledata rate3,双倍速率同步动态随机存储器3)的内存规格,即DRAM控制器的内存规格可能是ddr2或ddr3。ddr2、ddr3每位数据线每次突发(burst)分别能传输的数据最多分别是4bit和8bit。比如ddr3,数据线位宽64,每次突发最多传输8×64=512b=64B数据。在本发明实施例中,1个拷贝单位的大小与FB-DIMM的内存规格有关,本发明对此不做限制。
需要说明的是,若所述拷贝请求消息为将1011 0110中的数据写入1110 0101中,第一AMB根据所述拷贝请求消息生成的读请求和写请求中,每个读请求都携带物理地址1011 0110,当所述读请求在内存模组之间发送时,接收到消息的内存模组首先需要根据读请求中的物理地址1011 0110的高4位1011与本内存模组的地址进行匹配,根据匹配的结果判断所述读请求中要读取的数据是否位于本内存模组中,若匹配的结果为本内存模组的地址与物理地址1011 0110的高4位1011不同,则由本内存模组将所述读请求发送至下个相邻的内存模组,由下各相邻的内存模组根据物理地址1011 0110的高4位1011与该内存模组的地址再进行匹配,若匹配的结果为该内存模组的地址与物理地址1011 0110的高4位1011相同,然后用读请求中物理地址的低4位0110与本内存模组的内存颗粒的地址进行匹配,若内存模组的存在内存颗粒的地址与所述读请求中的物理地址1011 0110的低4位0110相同,则表明是将物理地址为0101的内存颗粒中的数据读取,相应的进行数据的读取。
若写请求携带的物理地址为1110 0101,当所述写请求在内存模组之间发送时,接收到该写请求的内存模组都首先需要根据写请求中的物理地址1110 0101的高4位1110与本内存模组的地址进行匹配,根据匹配的结果判断所述写请求中的写数据需要写入本内存模组中,若匹配的结果为本内存模组的地址与物理地址1110 0101的高4位1110不同,则由本内存模组将所述写请求发送至下个内存模组,由下个内存模组根据物理地址1110 0101的高4位1110与本内存模组的地址再进行匹配,若匹配的结果为该内存模组的地址与物理地址1110 0101的高4位1110相同,然后该内存模组再根据所述写请求中的物理地址11100101的低4位0101与本内存模组的内存颗粒的地址进行匹配,若内存模组存在内存颗粒的地址与所述写请求中的物理地址1110 0101的低4位0101相同,则表明需要将写数据写入内存颗粒的地址与所述写请求中的物理地址1110 0101的低4位0101相同的内存颗粒中。
进一步的,本发明实施例提供的数据拷贝方法不仅可以应用于如图2所示的由同一个内存控制器控制的内存模组之间,在同一个内存控制器的内存模组之间进行数据的拷贝,也可以应用于不同内存控制器控制的内存模组之间,如图4所示,图4中是由第一内存控制器控制的内存模组的第一内存结构401和第二内存控制器控制的内存模组的第二内存结构402组成的不同内存控制器控制的内存模组的结构图,在图4中第一内存结构401是由CPU4011、内存控制器4012和3个内存模组4013、4014、4015组成,内存控制器4012分别与CPU4011和内存模组4013连接,内存模组4014分别和内存模组4013和内存模组4015连接;图4中第二内存结构402是由CPU4021、内存控制器4022和三个内存模组4023、4024、4025组成,内存控制器4022分别与CPU4021和内存模组4023连接,内存模组4024分别与内存模组4023和内存模组4025连接;第一内存结构401的内存模组4013与第二内存结构402的内存模组4023能够进行直接通信,第一内存结构401的内存模组4014与第二内存结构402的内存模组4024能够进行直接通信,第一内存结构401的内存模组4015与第二内存结构402能够进行直接通信,因此在不同内存控制器控制的内存模组之间可以进行数据的拷贝。具体的所述拷贝方法可以参考步骤301至307,本发明对此不再赘述。
本发明实施例提供的数据拷贝方法还可以应用于同一个内存模组的内存颗粒之间,即在同一个内存模组的内存颗粒之间进行数据的拷贝,具体数据拷贝的方法也与本发明实施例提供的数据拷贝方法相同,在此不再赘述。
需要说明的是,CPU也可以按照本发明实施例提供的执行函数memcpy()的功能的方法来执行函数memmove()的功能,函数memmove()与函数memcpy()的区别为,函数memcpy()的作用相当于复制功能,而函数memmove()的作用相当于剪切功能。
实施例2:
本发明实施例提供一种内存模组管理器50,所述内存模组管理器50可以为AMB。如图5所示,包括
接收单元501,用于接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
通信单元502,用于根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
该内存模组管理器在物理上可以位于第一内存模组或者第二内存模组中。
这样一来,内存模组管理器不仅可以通过接收单元接收来自于内存控制器的拷贝请求消息,也可以根据拷贝请求消息生成读请求和写请求,并与其他内存模组进行通信,在内存模组之间传输数据从而实现数据拷贝。实现内存模组间消息和数据的直接传输,内存模组间消息和数据的传输过程经过的数据通路较短,因此,与现有技术相比,提高了数据拷贝的效率。
进一步的,所述通信单元502具体用于:
根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
其中,所述读请求包含源地址,所述源地址为所述第一内存模组;所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
特别的,所述第一内存模组与所述第二内存模组由同一内存控制器控制;或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
本发明实施例提供一种内存***,包括:
至少一个内存控制器,用于生成拷贝请求消息;至少一个内存模组,用于存储数据;至少一个内存模组管理器,用于在所述至少一个内存模组之间拷贝数据,所述内存模组管理器为本发明任意实施例所述的内存模组管理器。
本发明实施例提供一种内存模组管理器60,所述内存模组管理器60可以为AMB。如图6所示,包括
接收机601,用于接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
处理器602,用于根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
这样一来,内存模组管理器不仅可以通过接收机接收来自于内存控制器的拷贝请求消息,也可以通过处理器生成读请求和写请求与其他内存模组进行通信。实现内存模组间消息的直接传输,内存模组间消息的传输过程经过的数据通路较短,因此,与现有技术相比,提高了数据拷贝的效率。
处理器602具体用于:根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据。
进一步的,如图7所示,所述内存模组管理器60还包括:发射机603,用于向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;处理器602还用于根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;发射机603还用于向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
其中,所述读请求包含源地址,所述源地址为所述第一内存模组;所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
特别的,所述第一内存模组与所述第二内存模组由同一内存控制器控制;或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
本发明实施例提供一种内存***,包括:
至少一个内存控制器,用于生成拷贝请求消息;至少一个内存模组,用于存储数据;至少一个内存模组管理器,用于在所述至少一个内存模组之间拷贝数据,所述内存模组管理器为本发明任意实施例所述的内存模组管理器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种数据拷贝方法,其特征在于,包括:
内存模组管理器接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
所述内存模组管理器根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
2.根据权利要求1所述的方法,其特征在于,所述根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组包括:
根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;
向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;
根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;
向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
3.根据权利要求1或2所述的方法,其特征在于,所述读请求包含源地址,所述源地址为所述第一内存模组;
所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
4.根据权利要求1至2任意一项权利要求所述的方法,其特征在于,所述第一内存模组与所述第二内存模组由同一内存控制器控制;
或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
5.一种内存模组管理器,其特征在于,包括:
接收单元,用于接收内存控制器发送的拷贝请求消息,所述拷贝请求消息为将第一内存模组中的数据块写入第二内存模组中;
通信单元,用于根据所述拷贝请求消息,生成读请求和写请求,并向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据,向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入第二内存模组。
6.根据权利要求5所述的内存模组管理器,其特征在于,
所述通信单元具体用于:
根据所述拷贝请求消息,生成读请求,所述读请求用于从所述第一内存模组中读取数据;
向所述第一内存模组发送所述读请求,请求从所述第一内存模组中读取数据;
根据所述拷贝请求消息和从所述第一内存模组中读取的数据生成写请求,所述写请求用于将从所述第一内存模组中读取的数据写入所述第二内存模组中;
向所述第二内存模组发送所述写请求,请求将从所述第一内存模组中读取的数据写入所述第二内存模组。
7.根据权利要求5或6所述的内存模组管理器,其特征在于,所述读请求包含源地址,所述源地址为所述第一内存模组;
所述写请求包含写数据和目的地址,所述写数据为从所述第一内存模组中读取的数据,所述目的地址为所述第二内存模组。
8.根据权利要求5至6任意一项权利要求所述的内存模组管理器,其特征在于,所述第一内存模组与所述第二内存模组由同一内存控制器控制;
或者,所述第一内存模组与所述第二内存模组由不同内存控制器控制。
9.根据权利要求5至6任意一项权利要求所述的内存模组管理器,其特征在于,所述内存模组管理器为先进内存缓冲器芯片AMB。
10.一种内存***,其特征在于,包括:
至少一个内存控制器,用于生成拷贝请求消息;
至少一个内存模组,用于存储数据;
至少一个权利要求5至9任意一项权利要求所述的内存模组管理器,用于在所述至少一个内存模组之间拷贝数据。
CN201310363325.1A 2013-08-20 2013-08-20 一种数据拷贝方法、设备和*** Active CN104424102B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310363325.1A CN104424102B (zh) 2013-08-20 2013-08-20 一种数据拷贝方法、设备和***
PCT/CN2014/081815 WO2015024418A1 (zh) 2013-08-20 2014-07-08 一种数据拷贝方法、设备和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310363325.1A CN104424102B (zh) 2013-08-20 2013-08-20 一种数据拷贝方法、设备和***

Publications (2)

Publication Number Publication Date
CN104424102A CN104424102A (zh) 2015-03-18
CN104424102B true CN104424102B (zh) 2017-10-10

Family

ID=52483041

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310363325.1A Active CN104424102B (zh) 2013-08-20 2013-08-20 一种数据拷贝方法、设备和***

Country Status (2)

Country Link
CN (1) CN104424102B (zh)
WO (1) WO2015024418A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7379361B2 (en) * 2006-07-24 2008-05-27 Kingston Technology Corp. Fully-buffered memory-module with redundant memory buffer in serializing advanced-memory buffer (AMB) for repairing DRAM
US7694093B2 (en) * 2007-04-27 2010-04-06 Hewlett-Packard Development Company, L.P. Memory module and method for mirroring data by rank
TWI467574B (zh) * 2011-11-01 2015-01-01 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與其資料傳輸方法
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN102945213B (zh) * 2012-09-24 2016-08-10 无锡众志和达数据计算股份有限公司 一种基于fpga的乱序内存控制器及其实现方法
CN103198028B (zh) * 2013-03-18 2015-12-23 华为技术有限公司 一种内存数据迁移方法、装置及***
CN103645996B (zh) * 2013-12-09 2016-07-06 龙芯中科技术有限公司 内存拷贝的方法、装置和片上***

Also Published As

Publication number Publication date
CN104424102A (zh) 2015-03-18
WO2015024418A1 (zh) 2015-02-26

Similar Documents

Publication Publication Date Title
US10104006B2 (en) Bus interface apparatus, router, and bus system including them
CN101853237B (zh) 片上***及axi总线下的传输方法
JP5566899B2 (ja) メモリにアクセスするシステム及び方法
CN110083461B (zh) 一种基于fpga的多任务处理***及方法
CN103200128B (zh) 一种网络包处理的方法、装置和***
CN103647726B (zh) 一种报文调度方法及装置
CN108733604A (zh) 一种基于modbus通讯协议的485总线智能扩展方法及装置
CN101938409B (zh) 数据处理装置和数据处理方法
JP2004350188A (ja) データ転送装置及びプログラム
JP2007110706A (ja) AXIプロトコルを適用したNoCシステム
CN102047619B (zh) 用于对异常分组的慢路径处理进行动态速率限制的方法、***和计算机可读介质
CN101257457A (zh) 网络处理器复制报文的方法和网络处理器
US20140365632A1 (en) Interface apparatus and memory bus system
CN105868134A (zh) 高性能多口ddr控制器及其实现方法
CN112948149A (zh) 一种远端内存共享方法、装置、电子设备及存储介质
CN105487990A (zh) 一种cpu与芯片之间传输消息报文的方法及装置
KR101559089B1 (ko) 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜
CN112035898A (zh) 多节点多通道高速并行处理方法及***
CN101631148A (zh) 串行通信协议中地址动态分配的通信方法
US20090024783A1 (en) Apparatus and method for network control
CN104424102B (zh) 一种数据拷贝方法、设备和***
CN105512075B (zh) 高速输出、输入接口电路及数据传输方法
CN106372013B (zh) 远程内存访问方法、装置和***
CN113497765B (zh) 一种路由管理的方法、装置、电子设备和存储介质
CN102170401A (zh) 一种数据的处理方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220825

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Patentee after: Institute of Computing Technology, Chinese Academy of Sciences

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right