数据传输装置和数据传输系统的制作方法

文档序号:25742051发布日期:2021-07-06 18:52阅读:67来源:国知局
数据传输装置和数据传输系统的制作方法
本申请涉及数据传输
技术领域
,具体而言,涉及一种数据传输装置和数据传输系统。
背景技术
:fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。ip(intelligentproperty)核是具有知识产权核的集成电路芯核总称,具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。基于ip的设计已成为目前fpga设计的主流方法之一。dma(directmemoryaccess,直接存储器访问)传输将数据从一个地址空间复制到另外一个地址空间。当cpu初始化这个传输动作,传输动作本身是由dma控制器来实行和完成,不需要消耗额外的cpu资源。dma传输对于高效能嵌入式系统及网络十分重要。对于普遍的dma使用场景,主机内存数据通过pcie(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线标准)总线,由dma控制器控制,传输至外设板卡,外设板卡如基于fpga的、集成dma控制器的各类通信卡、计算加速卡等。外设板卡存储资源相对有限,且数据处理带宽、延迟等性能指标通常会劣于pcie总线,即dma通道的输入端数据生产能力大于输出端数据消费能力。这种数据生产能力与消费能力的不匹配,使数据生产端必须在数据输送时根据消费端可用容量发起dma传输,从而使大数据量的传输不断中断,并由数据生产端处理这种中断,不断发起小规模数据片段的dma传输指令,造成生产端的压力及传输过程的低效。因此,基于dma方式进行数据传输的场景,需要解决由于数据生产能力大于消费能力所导致的生产端压力及传输过程的低效问题。技术实现要素:本申请实施例的目的在于提供一种数据传输装置和数据传输系统,将主机对于数据传输过程的跟踪控制卸载至外设的数据传输装置,实现无需主机处理器监管情况下的大数据量传输,有效解决大数据量传输场景下,数据生产能力大于消费能力所导致的传输过程的低效问题。本申请实施例第一方面提供了一种数据传输装置,包括:队列管理模块,连接主机,用于管理数据传输队列的状态信息,并接收主机发送的数据传输指令;描述符调度模块,连接所述队列管理模块,用于在接收到所述队列管理模块发出的数据传输通知信息后,调取所述数据传输指令中指定的目标队列的原始描述符;描述符构建模块,连接所述描述符调度模块,用于接收所述目标队列的原始描述符,并根据所述原始描述符和所述数据传输装置的当前可用存储容量,构建所述目标队列的子描述符;传输控制器,连接所述描述符构建模块,用于接收所述目标队列的子描述符,并基于所述子描述符传输所述目标队列中的数据。于一实施例中,还包括:传输完成控制模块,分别连接所述描述符构建模块和所述主机,用于在接收到来自所述描述符构建模块的数据传输完成信息后,将所述目标队列的传输完成信息反馈至所述主机。于一实施例中,所述队列管理模块包括:操作队列,连接所述主机,用于存储从所述主机获取的所述传输队列的状态信息;操作流水线,连接所述操作队列,用于以流水线方式访问所述传输队列的状态信息。于一实施例中,所述传输队列的状态信息包括:每个传输队列的队列号、队列地址、激活状态、队列尺寸、生产者指针、消费者指针和下一次出队的描述符序号中的一个或多个。于一实施例中,所述描述符调度模块,包括:调度器,分别连接所述主机和所述队列管理模块,用于接收所述队列管理模块的数据传输通知信息,并从所述主机中获取配置的调度策略和调度信息表,根据所述调度策略和所述调度信息表中选定需要出队的所述目标队列,并发送针对所述目标队列的出队操作请求至所述队列管理模块;元数据队列,连接所述队列管理模块,用于接收所述队列管理模块根据所述出队操作请求传输的所述目标队列的描述符元数据;存取单元,分别连接所述元数据队列和所述主机,用于从所述元数据队列接收所述目标队列的元数据,并根据所述目标队列的元数据从所述主机获取所述目标队列的原始描述符。于一实施例中,所述描述符构建模块包括:描述符队列,连接所述描述符调度模块,用于接收所述目标队列的原始描述符;构建单元,连接所述描述符队列,用于获取所述目标队列的原始描述符,查询所述数据传输装置的当前可用存储容量和存储空间物理地址,并根据所述原始描述符、所述当前可用存储容量和所述存储空间物理地址,构建所述目标队列的子描述符;下发单元,分别连接所述构建单元和所述传输控制器,用于发送所述目标队列的子描述符至所述传输控制器。于一实施例中,所述描述符构建模块还包括:更新单元,分别连接所述构建单元和所述下发单元,用于基于所述下发单元的传输完成信息,更新已完成传输的数据长度,并发送反馈信息至所述构建单元。于一实施例中,所述根据所述原始描述符、所述当前可用存储容量和所述存储空间物理地址,构建所述目标队列的子描述符,包括:将所述原始描述符记录的数据总长度减去已完成传输的数据长度,得到第一数据长度,并取所述当前可用存储容量与所述第一数据长度的值最小者作为待传输数据长度;将所述原始描述符中记录的内存物理地址加上已完成传输的数据的内存物理地址,得到所述子描述符的源数据地址,并将所述存储空间物理地址作为所述子描述符的目的地址,结合所述原始描述符的元数据,构建所述子描述符。于一实施例中,所述传输完成控制模块,包括:状态管理单元,连接所述描述符构建模块,用于记录所述目标队列的传输完成状态信息;发送单元,分别连接所述状态管理单元和所述主机,用于发送所述传输完成状态信息至所述主机。本申请实施例第二方面提供了一种数据传输系统,包括:主机和如本申请实施例第一方面及其任一实施例的数据传输装置;其中,所述主机包括:存储器和处理器,所述主机上安装有驱动程序,所述处理器用于执行所述驱动程序,以驱动所述数据传输装置运行;所述主机还包括:传输驱动模块,连接所述数据传输装置,用于向所述数据传输装置发起数据传输指令。本申请提供的数据传输装置和数据传输系统,通过将数据传输装置集成到外设板卡,与板卡存储空间进行交互,通过跟踪可用存储空间状态,自适应构建目标队列的子描述符,进而根据子描述符进行数据传输。实现了将主机处理器对于数据传输过程的跟踪控制卸载至外设板卡,实现无需主机处理器监管情况下的大数据量传输,有效解决大数据量传输场景下,数据生产能力大于消费能力所导致的传输过程的低效问题。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本申请一实施例的数据传输系统的结构示意图;图2为本申请一实施例的数据传输装置的队列管理模块结构示意图;图3为本申请一实施例的数据传输装置的描述符调度模块结构示意图;图4为本申请一实施例的数据传输装置的描述符构建模块结构示意图;图5为本申请一实施例的数据传输装置的传输完成控制模块结构示意图。附图标记:1-主机,2-外设板卡,10-传输驱动模块,20-数据传输装置,21-队列管理模块,22-描述符调度模块,23-描述符构建模块,24-传输控制器,25-传输完成控制模块,211-操作队列,212-操作流水线,221-调度器,222-元数据队列,223-存取单元,231-描述符队列,232-构建单元,233-下发单元,234-更新单元,251-状态管理单元,252-发送单元。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。如图1所示,本实施例提供一种数据传输系统,包括:主机1和数据传输装置20,其中,主机1包括:存储器和处理器,主机1上安装有驱动程序,处理器用于执行驱动程序,以驱动数据传输装置20运行。主机1还包括:传输驱动模块10,连接数据传输装置20,用于向数据传输装置20发起数据传输指令。于一实施例中,电子设备1可以是手机、笔记本电脑、台式计算机等设备。于一实施例中,如图1所示,传输驱动模块10可以包括:驱动模块执行逻辑部分、驱动模块内存数据结构。驱动模块内存数据结构包括传输队列及传输完成队列,传输队列用于存放待传输数据的dma描述符,传输完成队列用于存储dma描述符完成信息。两种队列的数量及队列长度可自定义。两种队列均可以采用环形结构及生产者、消费者工作模式。于一实施例中,驱动模块执行逻辑部分包括初始化逻辑、外部接口逻辑、传输队列维护逻辑,以及传输完成队列维护逻辑:初始化逻辑用于初始化数据传输装置20的ip核各组成模块,包括传输队列状态表、描述符调度模块22的调度策略、传输完成信息发送策略、传输完成队列状态表等。外部接口逻辑基于初始化逻辑、传输队列维护逻辑、传输完成队列维护逻辑,实现外部接口功能,包括新建传输会话、初始化、发送描述符,以及查询队列状态。传输队列维护逻辑用于维护传输队列,可以包括:建立传输会话、传输队列、传输完成队列的对应关系、维护各个传输队列的地址、生产者指针、消费者指针。传输完成队列维护逻辑用于维护传输完成队列,可以包括:建立传输会话、传输队列、传输完成队列的对应关系、维护各个传输完成队列的地址、生产者指针、消费者指针。于一实施例中,数据传输装置20可以以控制器ip核的形式集成于外设板卡2,其可以可插拔式的与主机1连接。典型的外设板卡2如toe(tcp/ipoffloadengine)网卡。基于fpga设计实现toe网卡相对于采用协同网络处理器的方式,及专用集成电路(asic)的方式,兼具性能及成本优势,是设计toe网卡的常规硬件策略。同时,采用dma技术处理主机1与toe网卡之间数据传输也较为普遍,dma技术可以在无处理器参与的情况下,实现主机1内存与toe网卡缓存之间的数据传输。然而,用于toe网卡的dma数据传输存在特殊性:tcp传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,为实现可靠传输,引入了确认机制,在发送过程中,为保证数据已被目标端接收,需要对发送数据进行缓存,直至收到目标端回传的确认信号。对于toe网卡,发送缓存位于网卡存储器内,其容量大小通常远低于主机1内存,同时为满足多连接处理,每个连接对应的发送缓存容量更为有限。由于网络环境的不可预知性,无法事先明确toe网卡发送缓存的容量使用情况,对于每次数据发送,主机1端需要进行网卡发送缓存可用容量的确认,根据缓存可用空间大小,发起主机1端到toe网卡缓存的dma数据传输,再由toe网卡按照tcp/ip协议进行数据打包发送。因此,对于一次大数据量的通信传输任务,主机1仍然需要与toe网卡进行频繁的交互,跟踪、控制dma传输过程,占用了大量的处理器资源、降低了数据吞吐量,对于多连接情景、大数据量传输,情况将更加严重。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,主机1的传输驱动模块10用于数据传输装置20的初始化,管理主机1内存中预分配的传输队列及传输完成队列空间,还用于存取数据传输装置20传输队列及传输完成队列状态信息。于一实施例中,传输驱动模块10还用于实现dma数据传输过程的自动化管控,传输驱动模块10可以集成到基于fpga的外设板卡2驱动程序中,提供新建传输会话、发送dma描述符、查询队列状态等软件接口。其集成方式可以为:传输驱动模块10提供初始化接口,用于外设板卡2驱动程序进行数据传输装置20的初始化。提供传输会话数据结构及新建传输会话接口,用于板卡驱动程序实例化传输会话,并在通过实例化传输会话实现dma传输及队列状态查询。于一实施例中,传输会话的实例化过程可以在传输驱动模块10中分配相应的环形传输队列及传输完成队列,并通过入队操作指令将队列信息传递至数据传输装置20,数据传输装置20的ip核在fpga外设板卡2端维护了传输队列及传输完成队列的相关元数据,元数据可以包含但不限于:队列地址、队列长度、生产者消费者指针等,用于调度控制传输过程。于一实施例中,数据传输装置20支持多队列工作模式,为实现针对fpga外设板卡2的多传输会话管控,以及板卡服务资源共享提供了基础架构支撑。如图1所示,本申请提供的一个数据传输装置20可以包括:队列管理模块21、描述符调度模块22、描述符构建模块23和传输控制器24,其中:队列管理模块21,连接主机1,用于管理数据传输队列的状态信息,并接收主机1发送的数据传输指令。描述符调度模块22,连接队列管理模块21,用于在接收到队列管理模块21发出的数据传输通知信息后,调取数据传输指令中指定的目标队列的原始描述符。描述符构建模块23,连接描述符调度模块22,用于接收目标队列的原始描述符,并根据原始描述符和数据传输装置20的当前可用存储容量,构建目标队列的子描述符。传输控制器24,连接描述符构建模块23,用于接收目标队列的子描述符,并基于子描述符传输目标队列中的数据。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,主机1发送的数据传输指令可以是待传输数据的dma描述符,即主机1端传输会话实例可以通过发送dma描述符启动数据传输,dma描述符被放入传输队列,主机1的传输驱动模块10执行逻辑部分维护传输队列,移动生产者指针,并向数据传输装置20的ip核发送传输队列变更信息,主机1端可一次性发送多个dma描述符。于一实施例中,数据传输装置20的队列管理模块21用于维护传输队列元数据,进行生产者指针的更新,并向描述符调度模块22发送门铃通知。描述符调度模块22根据预先设置的调度策略,选择目标队列进行描述符出队操作,并将待传输的传输队列中消费者指针所指定dma描述符传送至描述符构建模块23。并向队列管理模块21发送出队确认操作,队列管理模块21移动队列的消费者指针。于一实施例中,传输控制器24可以是dma控制器。描述符构建模块23记录上游模块传入的原始dma描述符及其元数据,进入应用数据传输循环,该循环通过获取fpga外设板卡2可用存储空间信息,包括目标存储地址信息、可用空间容量,结合应用数据物理地址构建子dma描述符,发送至dma控制器,执行数据传输,待数据传输完成后,反馈已传输数据长度给描述符构建模块23,以计算剩余待传输数据量,进入下一轮循环。于一实施例中,数据传输装置20还包括:传输完成控制模块25,分别连接描述符构建模块23和主机1,用于在接收到来自描述符构建模块23的数据传输完成信息后,将目标队列的传输完成信息反馈至主机1。在实际场景中,以主机1与外设板卡2之间的dma数据传输为例,待原始dma描述符所标识的数据发送完毕,则由描述符构建模块23向传输完成控制模块25发送相关传输完成信息,传输完成信息包含但不限于:队列id、描述符id、传输数据长度。于一实施例中,传输完成控制模块25同样维护了传输驱动模块10的传输完成队列信息,将传输完成信息存入传输完成队列,供会话实例查询。dma的传输过程由传输会话实例发起后,数据传输装置20进行传输过程跟踪、控制,无需主机1端处理器参与。于一实施例中,主机1端传输会话实例通过查询队列状态接口,查询传输队列及传输完成队列的状态信息,从而进一步执行数据发送及完成确认等操作。本实施例提供的数据传输系统,能够实现主机1端内存数据到基于fpga的外设板卡2存储空间的自动化、可控传输。通过将数据传输装置20的ip核集成到fpga外设板卡2,与dma控制器、板卡存储空间进行交互,通过跟踪可用存储空间状态,自适应构建dma描述符,控制dma控制器进行数据传输。采用多队列模式,支持基于策略的多传输会话并发传输控制。硬件管控dma传输过程,减少对于主机1端处理器资源的占用,提高数据传输效率。如图2所示,为本申请提供的一个队列管理模块21包括:操作队列211和操作流水线212,其中:操作队列211,连接主机1,用于存储从主机1获取的传输队列的状态信息。操作流水线212,连接操作队列211,用于以流水线方式访问传输队列的状态信息。于一实施例中,传输队列的状态信息包括:每个传输队列的队列号、队列地址、激活状态、队列尺寸、生产者指针、消费者指针和下一次出队的描述符序号中的一个或多个。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,队列管理模块21用于维护传输队列在fpga外设板卡2端的状态信息,传输队列的状态信息可以以传输队列状态表的形式存储,如表1所示:表1传输队列状态表queueaddactivesizeprdcondqnext14258y208242b149n201235…n传输队列状态表存储在fpga芯片上bram(blockmemory)存储单元中,表1属性可以包括队列号queue、队列地址add、激活状态active、队列大小size、生产者指针prd、消费者指针con,以及标识下一次出队的描述符序号dqnext。于一实施例中,对于bram中传输队列状态表的存取需要消耗一定的时间周期,为提高吞吐能力,对于状态表的访问采用流水线方式。该流水线支持状态读写、出队、入队、出队确认等操作,所有操作通过操作队列211(fifo)进入流水线。于一实施例中,主机1端的传输驱动模块10可以通过状态读写操作对传输队列状态表1进行初始化,并在数据传输过程中访问生产者、消费者指针。传输驱动模块10仅对生产者指针执行写操作,即响应传输会话发送的dma描述符指令,执行入队操作,由操作流水线212写入生产者指针值,并将生产者指针的更新长度通过门铃模式通知描述符调度模块22。传输驱动模块10可通过读操作读取特定队列的消费者指针状态信息。于一实施例中,fpga外设板卡2端描述符调度模块22执行出队操作,携带目标队列号信息,从特定目标队列中出队dma描述符,操作流水线212通过读取状态表1中的dqnext值,生成描述符元数据,该元数据可以包含队列号及描述符物理地址,同时递增表1中的dqnext值。当完成某个dma描述符从主机1内存传输队列到描述符构建模块23的传输时,描述符调度模块22发出出队确认操作,携带目标队列号,由操作流水线212执行相应目标队列的消费者指针递增操作。如图3所示,为本申请提供的一个描述符调度模块22,包括:调度器221、元数据队列222、存取单元223,其中:调度器221,分别连接主机1和队列管理模块21,用于接收队列管理模块21的数据传输通知信息,并从主机1中获取配置的调度策略和调度信息表,根据调度策略和调度信息表中选定需要出队的目标队列,并发送针对目标队列的出队操作请求至队列管理模块21。元数据队列222,连接队列管理模块21,用于接收队列管理模块21根据出队操作请求传输的目标队列的描述符元数据。存取单元223,分别连接元数据队列222和主机1,用于从元数据队列222接收目标队列的元数据,并根据目标队列的元数据从主机1获取目标队列的原始描述符。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,描述符调度模块22用于从主机1端的传输驱动模块10的传输队列中获取dma描述符,存入下游描述符构建模块23。于一实施例中,描述符调度模块22中设置有调度信息表,如表2所示:表2调度信息表queuelengthpriority160290…n调度信息表2用于维护各队列调度用信息,由传输驱动模块10进行队列号queue及队列优先级priority的初始化,而length为通过门铃通知进行累加的传输队列中存在描述符个数,每执行完一次dma描述符的存取操作,length值进行递减。于一实施例中,调度器221根据主机1中驱动程序在初始化过程中配置的调度策略,扫描调度信息表2选择目标队列进行出队请求,可配置的调度策略包含但不限于:轮询策略、优先级策略、maxlength策略。其中:轮询策略:依次扫描每个队列,对于length大于0的队列,向传输队列状态管理模块发出出队操作。优先级策略:根据队列预设的优先级,先从对优先级高的队列执行出队操作,直到队列length为0,依次处理低优先级队列。maxlength策略:根据每次根据队列length值,选择最大length队列执行出队操作。于一实施例中,传输驱动模块10在初始化数据传输装置20地的ip核过程中,配置调度器221的调度策略。于一实施例中,调度器221根据调度策略及调度信息表向队列管理模块21发出针对目标队列的出队操作后,队列管理模块21返回目标队列的dma描述符元数据,存入元数据队列222(即fifo)。存取单元223根据dma描述符元数据从传输队列中取出目标队列的原始dma描述符,并将其传送至下游描述符构建模块23,完成传送后,向队列管理模块21发出出队确认操作,由队列管理模块21执行消费者指针的递增。如图4所示,为本申请提供的一个描述符构建模块23包括:描述符附列、构建单元232和下发单元233,其中:描述符队列231,连接描述符调度模块22,用于接收目标队列的原始描述符。构建单元232,连接描述符队列231,用于获取目标队列的原始描述符,查询数据传输装置20的当前可用存储容量和存储空间物理地址,并根据原始描述符、当前可用存储容量和存储空间物理地址,构建目标队列的子描述符。下发单元233,分别连接构建单元232和传输控制器24,用于发送目标队列的子描述符至传输控制器24。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,描述符构建模块23基于描述符调度模块22传递的原始dma描述符,以及fpga外设板卡2存储空间的可用容量,构建子dma描述符。子dma描述符用于描述应用数据地址及可传送的数据长度,对于大数据量的dma传输,子dma描述符所描述的传输数据仅为原始dma描述符所表征数据的片段。原始dma描述符为传输队列中存储的dma描述符。于一实施例中,描述符构建模块23还包括:更新单元234,分别连接构建单元232和下发单元233,用于基于下发单元233的传输完成信息,更新已完成传输的数据长度,并发送反馈信息至构建单元232。于一实施例中,描述符调度模块22将原始dma描述符及其元数据,包括队列号、描述符序号,传输至描述符构建模块23的描述符队列231(fifo)。然后通过构建单元232构建子描述符,并基于如图4所示的构建流水线完成构建过程,流水线主要有构建单元232、下发单元233和更新单元234完成,其运行流程为:第1步:构建单元232获取描述符队列231fifo中dma描述符及其元数据,用以初始化传输控制信息组,如表3所示:表3传输控制信息组queue1ordesordesacclen10index2在传输控制信息组表3中,包括队列号queue、原始dma描述符ordes、累计完成数据传输长度acclen、描述符序号index。第2步:构建单元232查询fpga外设板卡2存储空间的当前可用存储容量及存储空间物理地址,根据原始描述符、当前可用存储容量和存储空间物理地址,构建目标队列的子描述符。于一实施例中,第2步具体可以包括:将原始描述符记录的数据总长度减去已完成传输的数据长度,得到第一数据长度,并取当前可用存储容量与第一数据长度的值最小者作为待传输数据长度。将原始描述符中记录的内存物理地址加上已完成传输的数据的内存物理地址,得到子描述符的源数据地址,并将存储空间物理地址作为子描述符的目的地址,结合原始描述符的元数据,构建子描述符。即以板卡存储空间物理地址为子dma描述符中的目的地址。待传输数据长度为原始描述符ordes记录的数据长度减去acclen的值。取外设板卡2当前可用存储容量与待发送数据量的较小者为子dma描述符中的待传输数据长度。待传输数据的主机1内存物理地址,等于ordes中记录的内存物理地址加上acclen的值,以待传输数据的内存物理地址为子dma描述符中的源数据地址。结合子dma描述符中的队列号、原dma描述符序列号等元数据,构建子描述符,并将其传递至下发单元233。第3步:下发单元233向dma控制器(即传输控制器24)发送子dma描述符,并启动数据传输,待完成由主机1内存到fpga外设板卡2存储空间的数据传输后,下发单元233接到dma控制器传输完成元数据信息。下发单元233传递传输完成元数据至更新单元234,传输完成元数据包含但不限于:队列号、原dma描述符序列号、完成传输数据长度。第4步:更新单元234更新传输控制信息组表3,将完成传输的数据长度,累加至acclen,如果累加后的acclen值小于ordes中记录的数据长度,则向构建单元232发送触发信号,返回第2步,进行下一轮子dma描述构建及数据传输工作,直至表3中的acclen值等于ordes中记录的数据长度。当acclen值等于ordes中记录的数据长度,则ordes所表征的待传输数据传输完成,更新单元234向下游传输完成控制模块25发送原始dma描述符完成信号,该完成信号包含但不限于:队列号、dma描述符序号、完成数据传输的长度。如图5所示,为本申请提供的一个传输完成控制模块25,包括:状态管理单元251和发送单元252,其中:状态管理单元251,连接描述符构建模块23,用于记录目标队列的传输完成状态信息。发送单元252,分别连接状态管理单元251和主机1,用于发送传输完成状态信息至主机1。于一实施例中,以主机1与外设板卡2之间的dma数据传输为例,传输完成控制模块25用于维护已完成数据传输的dma描述符相关信息,通过初始化配置的发送策略,向主机1端的传输驱动模块10发送数据传输完成状态信息,数据传输完成状态信息包含但不限于:队列号queue、dma描述符序号,以及完成传输的数据长度length。如表4所示:表4传输完成状态信息queuelengthheadtail12012223…n传输完成状态信息可以被记录在传输完成状态表4中。传输完成状态表4可用于记录各传输队列中当前已完成数据传输的情况。于一实施例中,为提高fpga片上存储资源的实际利用率,传输完成状态表将具体的dma描述符完成情况记录在如图5所示的描述符完成信息表中:表5描述符完成信息表indexordes-indexlengthnext021011320--241033515--4…m描述符完成信息表5的列属性可以包括表项索引index、原始dma描述符序号ordes-index、完成传输的数据长度length,以及下一个表项的索引next。描述符完成信息表5可以容量固定,可以通过使用一个队列fifo管理表项来实现,fifo中记录了可用表项的索引,新建表项时执行fifo出队操作,将表项信息写入出队的表项索引所指向的表空间。删除表项时执行fifo入队操作,将待删除的表项索引写入fifo。因此不需要为每个dma描述符完成信息建立新的表项,而是共享描述符完成信息表空间,提供存储资源利用率。传输完成状态表针对各个传输队列记录队列号queue、当前完成传输的dma描述符个数length、描述符完成信息表中属于队列queue的第一个表项索引head、及最后一个表项索引tail。于一实施例中,对于状态管理单元251和发送单元252同时访问传输完成状态表4的状况,可以建立锁机制进行多模块的并发访问。传输完成状态表4锁针对两个单元模块,及其当前访问的表项进行加锁,如表6所示,避免为每个表项分配锁,减少了资源消耗。表6传输完成状态表锁lock1lndex1lock2index2w3w2于一实施例中,上游描述符构建模块23向传输完成控制模块25发送原始dma描述符完成信息,由状态管理单元251将完成信息写入传输完成状态表4。写入过程包括:第1步:基于表6对待操作表项加锁,方式为判断传输完成信息发送模块是否正在对同一表项进行写操作,即lock2为写状态、index2等于待操作表项的索引,则加锁失败,等待后重试。当传输完成信息发送模块未进行同一表项的写操作,则加锁成功,lock1为w,即表征写状态,index1为待操作表项索引。第2步,获取描述符完成信息表空闲表项,写入表项信息。第3步,更新next、tail及length信息。待完成传输完成状态表写入操作后,向传输完成信息发送模块发送通知,通知信息包括队列号、dma描述符序号。于一实施例中,发送单元252由传输驱动模块10配置发送策略,可以包括:即可发送策略、批量发送策略。即可发送策略针对每一次通知进行一次发送,每次发送一个dma描述符完成信息,有利于及时响应。批量发送策略在收到预配置数量的通知后执行一次发送,每次打包发送预配置数量的dma描述符完成信息。于一实施例中,为实现批量发送,发送单元252可以为每个传输队列维护了一个通知计数器,当计数器达到预设定数时,触发针对相应队列的批量发送操作,发送操作有利于提高传输带宽。对于每次发送,其过程为:第1步:对待操作表项加锁,方式为判断传输完成状态管理模块是否正在对同一表项进行写操作,即lock1为w状态、index1等于待操作表项的索引,则加锁失败,等待后重试。状态管理单元251未进行同一表项的写操作,则加锁成功,lock2为w,index2为待操作表项索引。第2步:通过传输完成状态表4获取相应队列的head值,读取描述符完成信息表5中head值对应的表项内容,如果是批量发送,则通过next指针读取多个表项。第3步:在传输完成状态表4中更新head及length信息,在描述符完成信息表5中将已读取表项的索引依次加入fifo。上述传输完成控制模块25,通过状态管理单元251可维护传输完成队列在fpga端的状态信息,发送单元252通过获取传输完成队列的物理地址,实现完成信息的发送。上述数据传输装置20和数据传输系统,通过将数据传输装置20的ip核集成到fpga外设板卡2,与dma控制器、板卡存储空间进行交互,通过跟踪可用存储空间状态,自适应构建dma描述符,控制dma控制器进行数据传输。能够实现主机1端内存数据到基于fpga的外设板卡2存储空间的自动化、可控传输。采用多队列模式,支持基于策略的多传输会话并发传输控制。硬件管控dma传输过程,减少对于主机1端处理器资源的占用,提高数据传输效率。虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1