一种固定描述符预算下的数据搬运方法、系统及存储介质与流程
本技术涉及嵌入式系统数据传输,尤其涉及一种固定描述符预算下的数据搬运方法、系统及存储介质。
背景技术:
1、在嵌入式设备的数据采集、图像处理以及存储器与外设之间的数据交换中,处理器通常将成批数据的搬运交给直接存储器存取(direct memory access,dma)控制器完成。处理器先准备若干描述符,每个描述符给出源地址、目的地址、搬运长度和传输属性,dma控制器再依据这些描述符访问存储器或外设。
2、当待搬运数据连续时,仅需少量描述符即可完成描述。当待搬运数据分散于多个不连续的物理区段时,通常要为各物理区段建立分散聚集描述符,并将描述符链接成链或排入队列。若描述符总数不超过硬件队列或片上存储的容量,处理器可以在搬运任务开始前生成完整的描述符链,由dma控制器连续遍历执行。
3、然而,实际系统中描述符槽的数量往往固定,而一个搬运任务包含的物理区段数量可能远多于描述符槽数量。若仍让整条描述符链在任务执行期间长期驻留,描述符本身将占用较多存储空间和读取带宽;若等待描述符槽空闲后再临时生成下一条描述符,处理器则需要频繁介入,dma控制器也可能因等待描述符而停顿。
4、此外,描述符槽的复用还需要与缓存维护配合进行:dma读取源数据前,处理器可能需要将相应缓存内容写回;dma写入目的数据后,处理器读取该数据前又可能需要使相应缓存失效。若处理器仅确认描述符已经完成,却无法确认该描述符对应的缓存维护以及相应的搬运进度记录是否同样完成,就可能过早覆盖仍有用途的描述符槽,或者把尚未对处理器可见的数据误认为已经完成,导致数据不一致。
5、因此,亟需一种在固定描述符预算下,既能连续高效搬运数据,又能保证缓存一致性且降低处理器介入度的数据搬运方法。
技术实现思路
1、本技术提供一种固定描述符预算下的数据搬运方法、系统及存储介质。
2、为实现上述目的,本技术采用如下技术方案:
3、第一方面,本技术提供一种固定描述符预算下的数据搬运方法,应用于包括处理器、存储器和dma控制器的数据搬运系统,包括以下步骤:
4、s1、取得待搬运任务信息,所述待搬运任务信息包括按逻辑搬运次序排列的多个物理区段,每个所述物理区段记录有源地址、目的地址、长度和传输属性;
5、s2、在描述符槽池中设置可复用描述符槽,所述可复用描述符槽的槽总数在搬运任务执行期间保持不变,并将所述可复用描述符槽分为当前槽库和下一槽库;
6、s3、按照单个槽库可容纳的描述符数量对所述多个物理区段进行截断或组合以划分为多个搬运窗口,生成当前搬运窗口的原生描述符并写入当前槽库,所述原生描述符为dma控制器能够直接执行的描述符;
7、s4、根据所述当前搬运窗口的源地址范围和目的地址范围确定所述当前搬运窗口的缓存维护范围,在完成对所述缓存维护范围的搬运前缓存维护后,向所述dma控制器发布所述当前槽库;当存在下一搬运窗口时,在所述dma控制器执行所述当前搬运窗口对应的数据搬运期间,将所述下一搬运窗口对应的原生描述符写入所述下一槽库;
8、s5、接收所述dma控制器返回的完成状态,对所述当前搬运窗口对应的缓存维护范围执行搬运后缓存维护;在所述当前搬运窗口的原生描述符连续完成、且所述当前搬运窗口对应的搬运后缓存维护完成时,将所述当前搬运窗口的结束位置写入窗口检查点记录,并将所述当前搬运窗口的结束位置作为新的已验证水位;在所述dma控制器不再引用所述当前槽库、且所述窗口检查点记录写入完成后,释放所述当前槽库中的描述符槽供后续搬运窗口复用;其中,所述已验证水位表示由所述dma控制器返回的完成状态和所述搬运后缓存维护的完成状态共同确认的连续搬运结束位置。
9、结合第一方面,在一种可能的实现方式中,所述搬运前缓存维护包括:在所述dma控制器执行所述当前搬运窗口对应的数据搬运之前,将所述缓存维护范围内的缓存数据写回所述存储器;
10、所述搬运后缓存维护包括:在所述dma控制器完成所述当前搬运窗口对应的数据搬运之后,使所述缓存维护范围内的缓存数据失效。
11、结合第一方面,在一种可能的实现方式中,步骤s1中,所述取得待搬运任务信息包括:
12、将所述待搬运任务信息编码为紧凑传输脚本;所述紧凑传输脚本包括基准记录和差分记录,所述基准记录记载有源基准地址和目的基准地址,所述差分记录记录有相对于前一记录的源地址增量和目的地址增量。
13、结合第一方面,在一种可能的实现方式中,步骤s3中,按照单个槽库可容纳的描述符数量对所述多个物理区段进行截断或组合以划分为搬运窗口的步骤包括:
14、从候选的搬运窗口结束位置中,排除会导致所述搬运窗口展开后的原生描述符数量超过单个槽库能够容纳的描述符数量、导致单个原生描述符指示的传输长度超过所述dma控制器的单次传输长度上限、导致结束位置对应的地址不满足预设对齐要求、或者导致所述搬运窗口跨越不可拆分的数据依赖边界的结束位置,再根据所述搬运窗口展开后的原生描述符生成量和所述搬运窗口对应的缓存维护量中的至少一项,确定所述搬运窗口的结束位置。
15、结合第一方面,在一种可能的实现方式中,步骤s4中,将所述下一搬运窗口对应的原生描述符写入所述下一槽库时,依次执行:
16、对所述下一槽库中待写入的描述符槽进行槽无效化处理;向所述描述符槽写入所述原生描述符的字段;执行使所述字段对所述dma控制器可见的同步操作;以及对所述描述符槽进行槽有效化处理,或发布指示可读取描述符边界的队列尾指针;
17、在所述当前搬运窗口对应的数据搬运完成后,将所述当前槽库与所述下一槽库的角色互换,使所述下一槽库作为新的当前槽库。
18、结合第一方面,在一种可能的实现方式中,在步骤s3中,还包括:针对每个搬运窗口形成窗口控制记录,所述窗口控制记录包括所述搬运窗口的源起止位置、目的起止范围和缓存维护范围;所述缓存维护范围由源缓存维护范围和目的缓存维护范围组成,所述源缓存维护范围为将所述搬运窗口涉及的源地址范围按缓存行边界取整后得到的范围,所述目的缓存维护范围为将所述搬运窗口涉及的目的地址范围按缓存行边界取整后得到的范围。
19、结合第一方面,在一种可能的实现方式中,所述窗口控制记录还包括窗口摘要,所述窗口摘要由所述搬运窗口的源起止位置、目的起止范围、原生描述符序列、缓存维护范围和版本信息生成;在将所述当前搬运窗口的结束位置写入窗口检查点记录时,先写入检查点内容和所述窗口摘要,在执行存储屏障后,再写入有效状态。
20、结合第一方面,在一种可能的实现方式中,当检测到搬运异常时,对于待搬运任务信息对应的能够重新取得数据的数据源,从最近的已验证水位起重建未完成的搬运窗口对应的原生描述符。
21、第二方面,本技术提供一种固定描述符预算下的数据搬运系统,包括处理器、存储器和dma控制器;所述处理器被配置为执行如第一方面或其中任意一种实现方式所述的方法。
22、第三方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或其中任意一种实现方式所述的方法。
23、与现有技术相比,本技术的有益效果在于:
24、第一,通过使可复用描述符槽的槽总数在搬运任务执行期间保持不变,并按照单个槽库可容纳的描述符数量划分搬运窗口,能够将任一时刻在dma控制器侧同时驻留的原生描述符数量限制在固定描述符预算内,从而减少dma控制器读取描述符的总线开销,有利于提高整体吞吐率。
25、第二,通过当前槽库与下一槽库构成双槽库,并在dma控制器执行当前搬运窗口期间将下一搬运窗口的原生描述符写入下一槽库,能够使dma控制器的搬运执行与描述符的预填充相互重叠,有利于降低处理器介入度、隐藏搬运窗口间的配置延迟。
26、第三,通过根据当前搬运窗口的源地址范围和目的地址范围确定缓存维护范围,能够以搬运窗口为粒度精准执行缓存维护,避免对与窗口无关的数据区域执行无谓的缓存同步操作,有利于降低缓存一致性维护带来的延迟。
27、第四,通过仅在当前搬运窗口的原生描述符连续完成且搬运后缓存维护完成时将窗口结束位置作为新的已验证水位,能够使已验证水位表征既完成dma搬运又完成缓存同步的连续搬运位置,从而保证搬运进度可确认;在发生异常时从已验证水位对应的位置重建未完成部分,能够避免全盘重传,有利于节省嵌入式系统的计算和带宽资源。
28、第五,通过在窗口检查点记录写入完成且dma控制器不再引用当前槽库后释放描述符槽,能够在固定描述符预算内支持任意数量的搬运窗口依次复用同一批描述符槽,有利于降低描述符存储资源占用。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com