一种存储器间的数据搬移的方法

文档序号:9826213阅读:488来源:国知局
一种存储器间的数据搬移的方法
【技术领域】
[0001]本发明涉及通信技术领域,特别涉及一种存储器间的数据搬移的方法。
【背景技术】
[0002]在通信系统中数据信息的基本单位为字节,用于数据存储的存储器宽度一般为N个字节,在数据处理中,经常需要将一定长度的数据在不同存储器间进行搬移,被搬移数据在源存储器中的起始位置是随机的,在宿存储器中的写入起始位置也是随机的。
[0003]通常情况下,数据搬移采用的方法是直接将数据从N宽度的源存储器中读出并写入至_宽度的宿存储器中,其每次处理需要处理将I到N个数据写入到I到M个位置的问题,共计NxM种选择。在逻辑设计中这需要消耗庞大的资源,同时设计也变得非常复杂,为了减少处理的复杂程度,实施者一般会限制数据在源,目的存储器中的起始位置,以减少处理中的变化种类。
[0004]上述数据搬移方法或者需要处理NxM种不同的选择,使得设计复杂资源消耗严重,或者通过限定数据读写的起始位置,为特定需求定制特定的搬移模块,牺牲了设计的灵活性和通用性。

【发明内容】

[0005]本发明的目的是提供一种存储器间进行数据搬移的通用方法,适应任意的数据搬移。
[0006]本发明的一种存储器间进行数据搬移的通用方法,其中,包括:设立一虚拟总线,该虚拟总线的宽度与源总线宽度一致,该虚拟总线用于作为源总线与宿之间的数据传输中介;读源数据到虚拟总线,从源存储器中读取当前地址对应存储单元的N个数据,其中有效的数据地址从源读出位置到0,将源读出长度个数据写入到虚拟总线;将虚拟总线的全部数据从高位开始写入到宿存储器当前地址对应的存储单元,写入位置从宿写入位置开始,当宿可写长度小于虚拟总线宽度时,虚拟总线数据写入长度为宿可写长度,其剩余数据不写入,将该剩余数据加入到后续的数据的头部,当虚拟总线读取后续的数据时,先将该剩余数据与后续的数据进行组合,并写入虚拟总线,当该虚拟总线或该宿的可写入长度小于该剩余数据与后续的数据的组合,则仅读取部分该后续的数据并将未读取的该后续的数据作为剩余数据进行处理。
[0007]根据本发明的存储器间进行数据搬移的通用方法的一实施例,其中,在源读出长度个数据写入到虚拟总线时,写入位置从虚拟总线的最高字节开始,当源读出长度小于虚拟总线长度时,虚拟总线剩余字节空间填O。
[0008]根据本发明的存储器间进行数据搬移的通用方法的一实施例,其中,设源存储器的宽度为N,宿存储器的宽度为M;当宿可写长度大于源可读长度时,源存储器读地址加I,宿存储器地址不变,新的源读出位置等于N,新的宿可写长度等于原宿可写长度减源可读长度;当宿可写长度小于源可读长度时,源存储器读地址不变,宿存储器地址加I,新的源读出位置等于原源读出长度减宿可写长度,新的宿可写位置等于Μ;当宿可写长度等于源可读长度时,源存储器和宿存储器地址均加I,源可读位置等于N,宿可写位置等于Μ;新的已写数据长度等于原已写数据长度加源可读长度与宿可写长度的最小值;当已写数据长度小于搬移数据长度时,继续进行数据搬移,否则此次数据搬移结束。
[0009]本发明存储器间的数据搬移的方法对于宽度分别为Ν,Μ的源,宿存储器之间的数据搬移,现有的数据搬移技术或者需要处理NxM种可能情况,设计复杂消耗资源大,或者限定读写位置,对设计输入进行限制,缺少通用性,本发明通过引入虚拟总线技术,将NxM种可能情况的处理转变成了 Ν+Μ种可能情况的处理,大大简化了设计并提高了通用性。
【附图说明】
[0010]图1所示为本发明存储器间的数据搬移的方法的流程图。
【具体实施方式】
[0011]为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。
[0012]图1所示为本发明存储器间的数据搬移的方法的流程图,如图1所示,在本发明存储器间的数据搬移的方法中,在源和宿之间建立一条虚拟总线,虚拟总线宽度与源总线宽度一致。数据的搬移不是直接由源到宿,而是首先从源到虚拟总线,再从虚拟总线到宿。
[0013]为了便于描述,假设源存储器宽度N,虚拟总线宽度N,宿存储器宽度为Μ,数据的存储采用大端方式,即数据从存储单元高位字节开始存储,存储单元内字节编号从O开始。如图1所示,本发明的存储器间进行数据搬移的通用方法包括下列步骤:
[0014](I)初始化数据搬移参数,源读出位置,源读出长度,宿写入位置,宿可写长度,搬移数据长度,已写数据长度。
[0015]源读出位置:数据在源存储器当前地址对应的存储单元内的起始位置(在一个存储单元内,有效数据开始的位置)。
[0016]源读出长度:数据在源存储器当前地址对应的存储单元内可读取的数据长度,等于“源读出位置+1”(有效数据的长度)。
[0017]宿写入位置:数据写入到宿存储器当前地址对应存储单元内的起始位置。
[0018]宿可写长度:存储器当前地址对应存储单元内能够被写入的数据长度,等于“宿写入位置+Γ O
[0019]搬移数据长度:待搬移数据的总长度(即多个存储单元的数据的总长度)。
[0020]已写数据长度:每次写入宿存储器时对实际写入数据长度进行累加,初始值为O。
[0021](2)读源数据到虚拟总线,从源存储器中读取当前地址对应存储单元的N个数据,其中有效的数据地址从“源读出位置”到0,将这“源读出长度”个数据写入到虚拟总线,写入位置从虚拟总线的最高字节开始。当“源读出长度”小于虚拟总线长度时,虚拟总线剩余字节空间填O。
[0022](3)虚拟总线写到宿存储器,将虚拟总线的全部数据从高位开始写入到宿存储器当前地址对应的存储单元,写入位置从“宿写入位置”开始,当“宿可写长度”小于虚拟总线宽度时,虚拟总线数据写入长度为“宿可写长度”,其剩余数据不写入。将该剩余数据加入到后续的数据的头部,当虚拟总线读取后续的数据时,先将该剩余数据与后续的数据进行组合,并写入虚拟总线,当该虚拟总线或该宿的可写入长度小于该剩余数据与后续的数据的组合,则仅读取部分该后续的数据并将未读取的该后续的数据作为剩余数据,按照上述步骤进行处理。
[0023](4)参数更新。
[0024]当“宿可写长度”大于“源可读长度”时,源存储器读地址加I,宿存储器地址不变,新的“源读出位置”等于N,新的“宿可写长度”等于原“宿可写长度”减“源可读长度”。
[0025]当“宿可写长度”小于“源可读长度”时,源存储器读地址不变,宿存储器地址加I,新的“源读出位置”等于原“源读出长度”减“宿可写长度”,新的“宿可写位置”等于M。
[0026]当二者相等时,源、宿存储器地址均加I,“源可读位置”等于N,“宿可写位置”等于M0
[0027]新的“已写数据长度”等于原“已写数据长度”加“源可读长度”与“宿可写长度”的最小值。
[0028]当“已写数据长度”小于”搬移数据长度”时,重复步骤2,3,4,否则此次数据搬移结束。
[0029]本发明存储器间的数据搬移的方法在数据搬移时,采用了虚拟总线的方式,将数据搬移动作由直接的源存储器到宿存储器改为从源存储器到虚拟总线,再由虚拟总线到宿存储器,对于宽度分别为N和M的源存储器和宿存储器,只需要处理N+M种情况,就可以完成任意N宽度源存储器数据到M宽度宿存储器的搬移。
[0030]本发明存储器间的数据搬移的方法对于宽度分别为N,M的源,宿存储器之间的数据搬移,现有的数据搬移技术或者需要处理NxM种可能情况,设计复杂消耗资源大,或者限定读写位置,对设计输入进行限制,缺少通用性,本发明通过引入虚拟总线技术,将NxM种可能情况的处理转变成了 N+M种可能情况的处理,大大简化了设计并提高了通用性。
[0031]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
【主权项】
1.一种存储器间进行数据搬移的通用方法,其特征在于,包括: 设立一虚拟总线,该虚拟总线的宽度与源总线宽度一致,该虚拟总线用于作为源总线与宿之间的数据传输中介; 读源数据到虚拟总线,从源存储器中读取当前地址对应存储单元的N个数据,其中有效的数据地址从源读出位置到O,将源读出长度个数据写入到虚拟总线; 将虚拟总线的全部数据从高位开始写入到宿存储器当前地址对应的存储单元,写入位置从宿写入位置开始,当宿可写长度小于虚拟总线宽度时,虚拟总线数据写入长度为宿可写长度,其剩余数据不写入,将该剩余数据加入到后续的数据的头部,当虚拟总线读取后续的数据时,先将该剩余数据与后续的数据进行组合,并写入虚拟总线,当该虚拟总线或该宿的可写入长度小于该剩余数据与后续的数据的组合,则仅读取部分该后续的数据并将未读取的该后续的数据作为剩余数据进行处理。2.如权利要求1所述的存储器间进行数据搬移的通用方法,其特征在于,在源读出长度个数据写入到虚拟总线时,写入位置从虚拟总线的最高字节开始,当源读出长度小于虚拟总线长度时,虚拟总线剩余字节空间填O。3.如权利要求1所述的存储器间进行数据搬移的通用方法,其特征在于, 设源存储器的宽度为N,宿存储器的宽度为M; 当宿可写长度大于源可读长度时,源存储器读地址加I,宿存储器地址不变,新的源读出位置等于N,新的宿可写长度等于原宿可写长度减源可读长度; 当宿可写长度小于源可读长度时,源存储器读地址不变,宿存储器地址加I,新的源读出位置等于原源读出长度减宿可写长度,新的宿可写位置等于M; 当宿可写长度等于源可读长度时,源存储器和宿存储器地址均加I,源可读位置等于N,宿可写位置等于M; 新的已写数据长度等于原已写数据长度加源可读长度与宿可写长度的最小值; 当已写数据长度小于搬移数据长度时,继续进行数据搬移,否则此次数据搬移结束。
【专利摘要】本发明公开了存储器间进行数据搬移的通用方法,其中,包括:设立一虚拟总线作为源总线与宿之间的数据传输中介;读源数据到虚拟总线;将虚拟总线的全部数据从高位开始写入到宿存储器当前地址对应的存储单元,写入位置从宿写入位置开始,当宿可写长度小于虚拟总线宽度时,虚拟总线数据写入长度为宿可写长度,其剩余数据不写入,将该剩余数据加入到后续的数据的头部,当虚拟总线读取后续的数据时,先将该剩余数据与后续的数据进行组合,并写入虚拟总线,当该虚拟总线或该宿的可写入长度小于该剩余数据与后续的数据的组合,则仅读取部分该后续的数据并将未读取的该后续的数据作为剩余数据进行处理。
【IPC分类】G06F12/0802
【公开号】CN105589815
【申请号】CN201610124558
【发明人】于礼斌, 邱东伟
【申请人】北京左江科技有限公司
【公开日】2016年5月18日
【申请日】2016年3月4日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1