CN114780466B - 一种基于dma的数据复制延时的优化方法 - Google Patents

一种基于dma的数据复制延时的优化方法 Download PDF

Info

Publication number
CN114780466B
CN114780466B CN202210720713.XA CN202210720713A CN114780466B CN 114780466 B CN114780466 B CN 114780466B CN 202210720713 A CN202210720713 A CN 202210720713A CN 114780466 B CN114780466 B CN 114780466B
Authority
CN
China
Prior art keywords
virtual
address
page
addresses
pages
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
CN202210720713.XA
Other languages
English (en)
Other versions
CN114780466A (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.)
Muxi Technology Beijing Co ltd
Original Assignee
Muxi Technology Beijing Co ltd
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 Muxi Technology Beijing Co ltd filed Critical Muxi Technology Beijing Co ltd
Priority to CN202210720713.XA priority Critical patent/CN114780466B/zh
Publication of CN114780466A publication Critical patent/CN114780466A/zh
Application granted granted Critical
Publication of CN114780466B publication Critical patent/CN114780466B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及数据处理技术领域,具体涉及一种基于DMA的数据复制延时的优化方法,该方法包括:解析并记录复制命令中包含的源起始地址和目的起始地址,并获取复制数据的长度;根据源起始地址和复制数据的长度计算读请求的虚拟地址,根据目的起始地址和复制数据的长度计算写请求的虚拟地址;将虚拟地址空间划分为多个虚拟页,分别将读写请求对应的自然顺序排列的虚拟地址序列更新为乱序顺序排列的虚拟地址序列;将乱序顺序排列的虚拟地址序列发给地址翻译单元进行地址翻译得到对应的物理地址,根据物理地址读写数据以完成复制。按照乱序顺序提前翻译所有虚拟页的首地址,缩短地址翻译的周期,提高数据复制效率。

Description

一种基于DMA的数据复制延时的优化方法
技术领域
本发明涉及数据处理技术领域,具体涉及一种基于DMA的数据复制延时的优化方法。
背景技术
DMA数据复制传输过程中,一个非常重要的处理流程就是属于COPY操作的读写虚拟地址翻译。***中使用虚拟地址而非物理地址,物理地址是真实存在的物理内存地址;虚拟地址是一种逻辑意义上的地址,虚拟地址需要转换为物理地址才能执行访问操作。DMA执行COPY的过程就涉及到两次将虚拟地址转换为物理地址的过程,分别为读虚拟地址转换为读物理地址以及写虚拟地址转换为写物理地址的过程。虚拟地址到物理地址的转换,需要MMU(Memory Management Unit)和页表(page table)的共同参与。
页表包括页表和页目录表:页表(Page Table Entry)简称为PTE,记录着虚拟地址的真实物理地址;页目录表(Page Directory Entry)简称为PDE,记录着页的目录。页目录表和页表的划分可根据不同位宽的操作***划分为多个级别,虚拟地址翻译为物理地址的过程就是使用虚拟地址为索引,在多级页表中一级一级地搜索到对应的物理地址。GPU虚拟地址页设置的最小物理单元为1个物理页,物理页的大小可根据操作***位宽和物理内存设置,以32-bit的操作***为例,一个物理页的大小是4KB,那么虚拟地址的lsb12标识页内地址的偏移(offset address),页索引号或者称为物理地址页入口(Entry)是虚拟地址的msb20。物理页是物理内存中固定大小的连续内存块,***中都按照设置的固定大小对齐划分,因此只要定位到物理地址页入口,映射到本物理页内物理地址的所有虚拟地址的翻译过程即完成。
控制所述页表搜索的功能单元为MMU,MMU由TLB和Table walk unit单元组成。因为访问内存中的页表相对耗时,尤其是在现在普遍使用多级页表的情况下,需要多次的内存访问,为了加快访问速度,为页表设置了一个硬件缓存:TLB,CPU会首先在TLB中查找,因为在TLB中找起来很快。TLB之所以快,一是因为它含有的物理地址页入口的数目较少,二是TLB是集成进CPU的,它几乎可以按照CPU的速度运行。虚拟地址翻译首先在TLB中查询,如果命中则完成虚拟地址翻译;否则需要多次访问内存,查询多级页表获取物理地址页入口,显然翻译延时远大于TLB。DMACOPY的虚拟地址翻译造成的延时,是对COPY性能提升的一个很关键的影响因素;TLB可以存放的物理页Entries有限,COPY的读写虚拟地址翻译需要频繁地访问页表,这样就使得虚拟地址翻译延时对COPY效率和性能的影响非常关键。
基于DMA的复制一般执行流程为:DMA解析出COPY命令之后,首先分析源起始地址和目的起始地址以及COPY的数据长度,并根据AXI burst设置分别计算读虚拟地址和写虚拟地址序列,虚拟读地址和写地址均是自然顺序;自然顺序的读请求首先发出,执行地址翻译,地址翻译完成后的物理地址经由AXI以及SOC总线(如PCIe)向源内存(memory)读取数据,数据返回后根据关联ID对应的读请求自然顺序(offset)来计算写请求的虚拟地址(写初始地址+offset),然后将写请求和读回的数据一起发送到地址翻译模块,完成地址翻译之后经由AXI和SOC总线发送到目的memory,执行写操作;DMA等待写返回,完成这一笔COPY。上述一般执行流程的缺点如下:
读写虚拟地址均以自然顺序发送给地址翻译模块,所以同属于1个物理页的所有地址会集中地按自然顺序开始地址翻译;由于同属1个物理地址页内的所有虚拟地址,使用页索引号(Entry)+偏移地址(offset address)即可,所以同一个物理地址页内有1个地址翻译完毕,页索引号存储在TLB内,当这个物理地址页内的其他虚拟地址翻译操作执行时,仅需要在TLB内查询并匹配到页索引号即可完成,几个时钟周期即可完成;每一个物理地址页的第一个地址执行翻译时,需要多次访问内存里的多级页表,一次内存访问的延时可达几百个时钟周期,依赖于多级页表访问的地址翻译延时远远大于访问TLB的延时。因此以自然顺序发送的虚拟地址翻译请求,页与页之间因为访问多级页表延时会发生空拍,不能形成流水,影响复制的性能。
发明内容
为了解决上述技术问题,本发明的目的在于提供一种基于DMA的数据复制延时的优化方法,所采用的技术方案具体如下:
一种基于DMA的数据复制延时的优化方法,该方法包括以下步骤:
解析并记录复制命令中包含的源起始地址和目的起始地址,并获取复制数据的长度;根据所述源起始地址和复制数据的长度计算读请求的虚拟地址,根据所述目的起始地址和复制数据的长度计算写请求的虚拟地址,其中读写请求分别对应的虚拟地址为自然顺序排列;将虚拟地址空间划分为多个虚拟页,分别将读写请求对应的自然顺序排列的虚拟地址序列更新为乱序顺序排列的虚拟地址序列;其中,所述乱序顺序排列的虚拟地址序列包括由提前读取的首地址构成的子序列和由更新后的虚拟页中的虚拟地址构成的子序列,所述首地址为每个虚拟页中任意一个虚拟地址,所述更新后的虚拟页包括缺项虚拟页和组合虚拟页,所述缺项虚拟页包括页内虚拟地址,所述组合虚拟页包括页内虚拟地址和一个剩余首地址,其中所述页内虚拟地址为虚拟页内除了首地址之外的虚拟地址,剩余首地址为在后排列的剩余虚拟页中的首地址,所述剩余虚拟页为除了提前读取首地址的虚拟页之外的虚拟页;按照乱序顺序将虚拟地址序列发给地址翻译单元进行地址翻译得到对应的物理地址,根据所述物理地址读写数据以完成复制。
本发明具有如下有益效果:
本发明实施例提供了一种基于DMA的数据复制延时的优化方法,该方法通过在将虚拟地址翻译为物理地址之前,将自然顺序的虚拟地址进行乱序排列,使地址翻译单元预先翻译多个虚拟页中的首地址,同时将剩余虚拟页中的首地址加入到提前读取首地址的虚拟页中,进而使地址翻译单元提前翻译所有虚拟页的首地址,相对于现有技术中按照自然顺序翻译地址导致等待不存在页表项的首地址的翻译延时过长的方法来说,极大的缩短地址翻译的周期,提高数据复制效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1为本发明一个实施例所提供的一种基于DMA的数据复制延时的优化方法流程图;
图2为本发明一个实施例所提供的虚拟页中虚拟地址的示意图。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于DMA的数据复制延时的优化方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一个或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
本发明实施例中所公开的方法适用于所有应用DMA技术的处理器,例如CPU和GPU芯片。DMA(Direct Memory Access,直接存储器访问)传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器与存储器之间的高速数据传输。DMA传输方式的优势在于能够直接进行大数据量数据搬移而又不占用处理器资源,既无需处理器直接控制,也没有中断处理的保留现场和恢复现场的过程,用硬件为数据传输开辟了一个专用的通道,与处理器并行处理。由于CPU和GPU的存储结构基本一样,因此本发明实施例以GPU芯片为例来说明本发明的具体方案,GPU(Graphics Processing Unit),即图形处理器,无论是图像处理还是并行计算,都是以大数据量传输为基础的行为。
下面结合附图具体的说明本发明所提供的一种基于DMA的数据复制延时的优化方法及***的具体方案。
请参阅图1,其示出了本发明一个实施例提供的一种基于DMA的数据复制延时的优化方法流程图,该方法包括以下步骤:
步骤S001,解析并记录复制命令中包含的源起始地址和目的起始地址。
接收来自GPU处理器的复制(COPY)命令,COPY命令通过DMA主动获取的方式读入DMA模块,经过命令解析和调度,开始执行COPY操作。
需要说明的是,GPU***的数据存储单元为字节(Byte),数据COPY的最小数据单元也是字节,每一个物理地址对应一个字节数据,同样的,每一个虚拟地址也对应一个字节数据。
对于GPU芯片来说,COPY操作可以实现以下存储单元之间的数据搬移:由systemmemory到local memory、由system memory到system memory、由local memory到systemmemory、由local memory到local memory。
具体的,源起始地址和目的起始地址标识了将要COPY的第一个字节数据的源地址和目的写入地址,COPY所有的地址序列再源起始地址的目的起始地址的基础上进行计算,记录复制数据的长度。其中源地址对应读请求的起始地址,目的起始地址对应写请求的起始地址。
步骤S002,根据源起始地址计算读请求的虚拟地址,根据目的起始地址计算写请求的虚拟地址,其中读写请求分别对应的虚拟地址为自然顺序排列;将虚拟地址空间划分为多个虚拟页,分别将读写请求对应的虚拟地址的自然顺序更新为乱序顺序排列的虚拟地址;其中,乱序顺序排列的虚拟地址序列包括由提前读取的首地址构成的子序列和由更新后的虚拟页中的虚拟地址构成的子序列,其中,首地址为每个虚拟页中任意一个虚拟地址,更新后的虚拟页包括缺项虚拟页和组合虚拟页,缺项虚拟页包括页内虚拟地址,组合虚拟页包括页内虚拟地址和一个剩余首地址,其中页内虚拟地址为虚拟页内除了首地址之外的虚拟地址,其中剩余首地址为在后排列的剩余虚拟页中的首地址,剩余虚拟页为除了提前读取首地址的虚拟页之外的虚拟页。
根据AXI总线数据位宽计算复制命令中包括的读写请求的虚拟地址和数量。根据虚拟地址的数量可以计算出虚拟页的数量。
其中,根据源起始地址计算读请求的虚拟地址的方法为:以源起始地址为第一个读请求的虚拟地址,按照AXI数据总线设置的数据宽度对应的增量地址长度,计算读请求地址序列:{源起始地址,源起始地址+增量,源起始地址+2*增量,...}。
其中,根据目的起始地址计算写请求的虚拟地址的方法为:以目的起始地址为第一个写请求地址,按照AXI数据总线设置的数据宽度对应的增量地址长度,计算读请求地址序列:{目的起始地址,目的起始地址+增量,目的起始地址+2*增量,...}。
根据上述方法得到的读写请求的虚拟地址是按照自然顺序排列的虚拟地址。
其中,将虚拟地址空间划分为多个虚拟页的方法为:根据需要复制的数据长度计算数据存储所占用的虚拟页的数量。
具体的,请参阅图2,虚拟地址与物理地址之间是一一对应的关系,虚拟地址是连续的,并且在一个虚拟页中的虚拟地址也是连续的;而对于物理地址,在同一个物理页内的物理地址是连续的,但物理页可以是不连续的,例如图中对于连续的虚拟页0和虚拟页1,虚拟页0的最后一个虚拟地址为seqn-12,相邻虚拟页1的起始虚拟地址是seqn-11,两个虚拟页之间的虚拟地址是连续的。但是对于虚拟页0和虚拟页1分别对应的物理页i和物理页j来说,物理页i和物理页j可以是连续的物理页,也可以是不连续的物理页;相应的其对应的物理地址也可以是不连续的,如图中物理页i的最后一个物理地址为(i+1)*n-1,而物理页j的起始物理地址为j*n。对于需要复制的数据共计m笔读写组,每个物理地址页内有n笔读/写。根据源起始地址计算读请求的虚拟地址,得到读请求对应的虚拟地址如下:{seq0,seq1,…,seqn-1,seqn,seqn+1,…,seq2n-1,seq2n,seq2n+1,…,seqm-3,seqm-2,seqm-1},将虚拟空间划分为多个虚拟页,每个虚拟页内共计n个虚拟地址,其中虚拟地址{seq0,seq1,…,seqn-1}划分为第一个虚拟页,seq0为第一个虚拟页中的第一个虚拟地址,seqn-1为第一虚拟页中的第n个虚拟地址;虚拟地址{seqn,seqn+1,…,seq2n-1}划分为第二个虚拟页,seqn为第二个虚拟页中的第一个虚拟地址,seq2n-1为第二个虚拟页中的第n个虚拟地址;以此类推,将所有虚拟地址划分到相应的虚拟页,得到多个虚拟页,每个虚拟页中的地址按照自然顺序连续排列。然后以每个虚拟页中的任意一个虚拟地址为首地址获取乱序顺序排列的虚拟地址,其中首地址为虚拟页中第一个进行地址翻译的地址,作为虚拟页的入口地址。首地址可以是各个虚拟页中的第一个虚拟地址,也可以是虚拟页中相对于虚拟页内第一个虚拟地址的偏移量相同的虚拟地址,还可以是虚拟页中任意一个虚拟地址。为了减少计算量,提高计算效率,优化资源分配,可以选取第一个虚拟地址作为首地址,或者选取相对于虚拟页内第一个虚拟地址的偏移量相同的虚拟地址作为首地址;例如选取各个虚拟页内中间位置的虚拟地址作为首地址。
提前将首地址发送给地址翻译单元进行地址翻译,在翻译完成之后,在TLB的映射表中会有相应的页表项(Entry),在后续翻译相应虚拟页内的虚拟地址时仅占用几个周期就能翻译完成(Entry+页内offset)。具体的,按照自然顺序选取与提前读取虚拟页的数量相等的首地址,将所选取的首地址按照顺序依次发送给MMU进行地址翻译;由于第一个虚拟页中的首地址已经提前发给MMU进行地址翻译,并且在第一个虚拟页之前已经提前读取了预设数量的首地址,因此第一个虚拟页设置为缺项虚拟页,不再为第一个虚拟页中填充剩余的首地址,将缺项虚拟页作为更新后的虚拟页。将第二个虚拟页设置为组合虚拟页,也即将剩余首地址中的第一个首地址填补到第二个虚拟页中原首地址的位置得到更新的第二个虚拟页,并将更新后的第二个虚拟页中的虚拟地址依次发送给MMU进行地址翻译,使未进行提前翻译的首地址随着虚拟页提前发送给MMU进行地址翻译;同理,将第三个虚拟页设置为组合虚拟页,将剩余地址中的第二个首地址填补到第三个虚拟页中原首地址的位置得到更新的第三虚拟页,并将更新后的第三个虚拟页中的虚拟地址依次发给MMU进行地址翻译;依次类推,由于提前读取了t个虚拟页的首地址,并且第一个虚拟页中并未移入剩余的首地址,因此最后t-1个虚拟页为缺项虚拟页,完成所有虚拟地址的地址翻译。由于第二个虚拟页对应的首地址提前进行了地址翻译,在TLB的映射表中已经有了相应的页表项,因此对于第二个虚拟页内原始的虚拟地址在进行地址翻译时不需要再次访问多级页表,虚拟页内的原始虚拟地址会在几个周期内翻译完成,此时由于第二虚拟页内所携带的剩余的第一个首地址在TLB中不存在对应的页表项,因此需要访问多级页表进行地址翻译,由于该剩余的第一首地址是随着第二个虚拟页发送给MMU进行的地址翻译,因此相对于该剩余的第一个首地址所处的原虚拟页来说也是提前进行的地址翻译。在第一个虚拟页内的所有虚拟地址翻译完成之后,TLB会移除提前读去的第一个首地址对应的页表项,建立剩余的第一个首地址与物理地址之间的映射关系,形成该剩余的第一个首地址对应的页表项;以此类推,形成虚拟页内的虚拟地址完全翻译完成之后就移除相应首地址的页表项,并建立下一个待翻译的首地址的页表项的动态过程。
由于现有技术中虚拟地址是按照自然顺序进行地址翻译,在虚拟页内第一个虚拟地址进行地址翻译时由于在TLB中没有对应的页表项,此时需要访问多级页表进行地址翻译,翻译的时间比较长,由于在第一个虚拟地址翻译的过程中第二个虚拟地址、第三个虚拟地址等依次发送给MMU,但是由于第一虚拟地址并未翻译完成,因此后续发送的虚拟地址在翻译的过程中均需要再次访问多级页表,不仅延长了翻译的周期而且加重了MMU的工作负载。而本专利所提供的地址翻译的方法采用乱序顺序排列的虚拟地址提前进行虚拟地址的翻译,在相应的虚拟页内的虚拟地址发送给MMU时相应的首地址已经翻译完成,那么此时虚拟页内的虚拟地址就能够在几个周期内翻译完成,相对于现有的按照自然顺序进行地址翻译来说,本专利所提供的方法通过提前进行地址翻译,在其他首地址翻译的同时对已经翻译过首地址的虚拟页内的虚拟地址进行翻译,同时将未翻译的首地址随同在先翻译的虚拟页一起发送给地址翻译单元提前进行首地址翻译,能够大幅度的缩短翻译周期,同时降低MMU的工作负载。
作为优选实施例,以每个虚拟页中相对于起始地址,地址增量相同的虚拟地址为首地址。设定的提前读的物理页的数量为t,对于第一个虚拟页{seq0,seq1,…,seqn-1}、第二个虚拟页{seqn,seqn+1,…,seq2n-1}、第三个虚拟页{seq2n,seq2n+1,…,seq3n-1}、…、第t个虚拟页{seq(t-1)n,seq(t-1)n+1,…,seqt×n-1}。以每个虚拟页首个虚拟地址作为首地址,则由提前读取的首地址构成的子序列为{seq0,seqn,seq2n,…,seq(t-1)n},由更新后的虚拟页中的虚拟地址构成的子序列为{seq1,…,seqn-1,seqt×n,seqn+1,…,seq2n-1,seq(t+1)×n,seq2n+1,…,seqm-3,seqm-2/seqm-1},将提前读取的首地址构成的子序列和由更新后的虚拟页中的虚拟地址构成的子序列进行拼接得到乱序排列之后的虚拟地址为:{seq0,seqn,seq2n,…,seq(t-1)n,seq1,…,seqn-1,seqt×n,seqn+1,…,seq2n-1,seq(t+1)×n,seq2n+1,…,seqm-3,seqm-2/seqm-1},如果最后一个虚拟地址是n的整数倍,则最后一笔请求的序列为seqm-2,否则最后一笔请求的序列为seqm-1。其中提前读的虚拟页的数量t的具体数值可根据不同***访问多级页表的总延时长和虚拟页内全部地址的查询TLB的延时总长的关系来确定。按照乱序排列之后的顺序将虚拟地址发送给地址翻译单元进行地址翻译,在翻译某一页(例如序号为第x页)的页内虚拟地址时,这个组合虚拟页中会进行第x+t个虚拟页的首地址的翻译;在第x+t虚拟页的这个首地址的翻译延时过程中,缺项虚拟页x,x+1,x+2,x+3,…,x+t-1的所有地址会通过TLB中的entry匹配成功而快速完成翻译;当x+t虚拟页的这个首地址的翻译完成得到entry,x+t缺项虚拟页中的所有地址将发出翻译请求,恰好和刚刚获取的entry匹配成功,进而达到快速翻译的目的。
具体的,提前读取的首地址的数量t满足以下条件:
T=(n-1)*TTLB*t
其中,T为翻译一个首地址访问多级页表的总延时长,TTLB为TLB翻译一个已经存在页表项的虚拟地址的延时,t为提前读取的首地址的数量,n为虚拟页中虚拟地址的总数量。
读写请求对应的虚拟地址的乱序顺序相同,将读写请求对应的虚拟地址的自然顺序更新为乱序顺序的过程相同,因此写请求更新为乱序顺序的过程不再赘述。
步骤S003,按照乱序顺序将虚拟地址发送给地址翻译单元进行地址翻译得到对应的物理地址,根据物理地址读写数据以完成复制。
在得到读请求的物理地址之后,读取相应的数据,并将读取的该数据与写请求一起发送给地址翻译模块进行地址翻译,完成地址翻译之后经由AXI和SOC总线发送到目的memory,执行写操作,DMA等待写返回,完成这一笔复制操作。其中写请求的地址翻译过程与读请求的地址翻译过程相同,不再赘述。
综上所述,本发明实施例提供了一种基于DMA的数据复制延时的优化方法,该方法通过在将虚拟地址翻译为物理地址之前,将自然顺序的虚拟地址进行乱序排列,使TLB预先翻译多个虚拟页中的首地址,同时将剩余虚拟页中的首地址加入到提前读取首地址的虚拟页中,进而使TLB提前翻译所有虚拟页的首地址,缩短地址翻译的周期,提高数据复制效率。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于DMA的数据复制延时的优化方法,其特征在于,该方法包括以下步骤:
解析并记录复制命令中包含的源起始地址和目的起始地址,并获取复制数据的长度;
根据所述源起始地址和复制数据的长度计算读请求的虚拟地址,根据所述目的起始地址和复制数据的长度计算写请求的虚拟地址,其中读写请求分别对应的虚拟地址为自然顺序排列;将虚拟地址空间划分为多个虚拟页,分别将读写请求对应的自然顺序排列的虚拟地址序列更新为乱序顺序排列的虚拟地址序列;其中,所述乱序顺序排列的虚拟地址序列是将由提前读取的首地址构成的子序列和由更新后的虚拟页中的虚拟地址构成的子序列进行拼接之后得到的序列,所述首地址为每个虚拟页中任意一个虚拟地址,所述更新后的虚拟页包括缺项虚拟页和组合虚拟页,所述缺项虚拟页包括页内虚拟地址,所述组合虚拟页包括页内虚拟地址和一个剩余首地址,其中所述页内虚拟地址为虚拟页内除了首地址之外的虚拟地址,剩余首地址为在后排列的剩余虚拟页中的首地址,所述剩余虚拟页为除了提前读取首地址的虚拟页之外的虚拟页;
按照乱序顺序将虚拟地址序列发给地址翻译单元进行地址翻译得到对应的物理地址,根据所述物理地址读写数据以完成复制。
2.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述首地址进一步为:
相对于每个虚拟页的起始地址,偏移量相同的虚拟地址为首地址。
3.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述首地址为虚拟页中第一个进行地址翻译的地址,作为虚拟页的入口地址。
4.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述提前读取的首地址数量的确定方法为:根据访问多级页表的总延时长和虚拟页内所有的页内虚拟地址查询TLB的延时总长的关系确定。
5.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,满足以下条件:
T=(n-1)×TTLB×t
其中,T为翻译一个首地址访问多级页表的总延时长,TTLB为TLB翻译一个已经存在页表项的虚拟地址的延时,t为提前读取的首地址的数量,n为虚拟页中虚拟地址的总数量。
6.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述更新后的虚拟页包括与提前读取首地址数量t相等的缺项虚拟页,其他的虚拟页为组合虚拟页;其中第一个虚拟页为缺项虚拟页,最后t-1个虚拟页为剩余数量的缺项虚拟页。
7.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述地址翻译单元在完成一个虚拟页的翻译之后,移除相应的页表项;并建立下一个待翻译的首地址的页表项。
8.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述读写请求对应的虚拟地址的乱序顺序相同。
9.根据权利要求1所述的一种基于DMA的数据复制延时的优化方法,其特征在于,所述源起始地址和目的起始地址为复制的第一个字节数据的源地址和目的写入地址。
CN202210720713.XA 2022-06-24 2022-06-24 一种基于dma的数据复制延时的优化方法 Active CN114780466B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210720713.XA CN114780466B (zh) 2022-06-24 2022-06-24 一种基于dma的数据复制延时的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210720713.XA CN114780466B (zh) 2022-06-24 2022-06-24 一种基于dma的数据复制延时的优化方法

Publications (2)

Publication Number Publication Date
CN114780466A CN114780466A (zh) 2022-07-22
CN114780466B true CN114780466B (zh) 2022-09-02

Family

ID=82422391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210720713.XA Active CN114780466B (zh) 2022-06-24 2022-06-24 一种基于dma的数据复制延时的优化方法

Country Status (1)

Country Link
CN (1) CN114780466B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109977037A (zh) * 2017-12-28 2019-07-05 龙芯中科技术有限公司 一种dma数据传输方法及***
CN113961488A (zh) * 2021-10-22 2022-01-21 上海兆芯集成电路有限公司 将虚拟地址重映射至物理地址的方法及地址重映射单元
CN114556881A (zh) * 2019-10-17 2022-05-27 华为技术有限公司 一种地址翻译方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404597B (zh) * 2015-10-21 2018-10-12 华为技术有限公司 数据传输的方法、设备及***
GB2551756B (en) * 2016-06-29 2019-12-11 Advanced Risc Mach Ltd Apparatus and method for performing segment-based address translation
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109977037A (zh) * 2017-12-28 2019-07-05 龙芯中科技术有限公司 一种dma数据传输方法及***
CN114556881A (zh) * 2019-10-17 2022-05-27 华为技术有限公司 一种地址翻译方法及装置
CN113961488A (zh) * 2021-10-22 2022-01-21 上海兆芯集成电路有限公司 将虚拟地址重映射至物理地址的方法及地址重映射单元

Also Published As

Publication number Publication date
CN114780466A (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
KR100278328B1 (ko) 캐시 미스 버퍼
US7472253B1 (en) System and method for managing table lookaside buffer performance
JP7340326B2 (ja) メンテナンス動作の実行
EP0019358B1 (en) Hierarchical data storage system
JPH10187533A (ja) キャッシュシステム、プロセッサ及びプロセッサを動作させる方法
US7472227B2 (en) Invalidating multiple address cache entries
KR102326280B1 (ko) 데이터 처리 방법, 장치, 기기 및 매체
CN115481054A (zh) 数据处理方法、装置及***、***级soc芯片及计算机设备
KR20190059221A (ko) 메모리 어드레스 변환
CN113485643A (zh) 用于数据存取的方法及数据写入的控制器
CN114780466B (zh) 一种基于dma的数据复制延时的优化方法
CN111126619B (zh) 一种机器学习方法与装置
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
JP2022528027A (ja) 仮想ページを不連続なバッキング物理サブページに割り当てることを可能にする方法
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
US20160062915A1 (en) Storage control device and storage control method
CN110941565A (zh) 用于芯片存储访问的内存管理方法和装置
KR102400977B1 (ko) 프로세서를 통한 페이지 폴트 처리 방법
CN110362509B (zh) 统一地址转换方法与统一地址空间
US7546439B1 (en) System and method for managing copy-on-write faults and change-protection
CN113448897B (zh) 适用于纯用户态远端直接内存访问的优化方法
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
JPH049346B2 (zh)
CN117389685B (zh) 虚拟机热迁移标脏方法及其装置、后端设备、芯片
JP3709586B2 (ja) 階層記憶システムにおけるデバイスアクセス方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant