The invention discloses a data transmission method of SG DMA, which includes: creating the link list 1 and the link list 2 of SG DMA data transmission in array form and creating the first buffer and the second buffer; copying user space data into the first buffer through CPU, writing the address of link list 1 into IO device; and copying user space data through CPU while starting SG DMA data transmission. Becks into the second buffer; creates an interrupt handler, and when the SG DMA transmission is completed, the CPU receives the transmission completion interrupt instruction sent by SG DMA and writes the address of Chain 2 to the IO device; then circulates until the user space data is completely written to the memory location of the IO device. The invention also discloses a data transmission device of SG DMA. This method and device solve the problem that CPU and DMA can not participate in data transmission at the same time, and improve the efficiency of data transmission in DMA.
【技术实现步骤摘要】
一种Scatter-GatherDMA的数据传输方法及装置
本专利技术涉及计算机数据传输领域,并且更具体地,特别是指一种Scatter-GatherDMA的数据传输方法及装置。
技术介绍
DMA(DirectMemoryAccess),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从IO设备到内存,从内存到IO设备或从一段内存到另一段内存。利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。Scatter-gatherDMA(SGDMA,分散-收集DMA)方式是与blockDMA方式相对应的一种DMA方式。在DMA传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但是在某些计算机体系中连续的存储器地址在物理上不一定是连续的,所以DMA传输要分成多次完成。如果在传输完一块物理上连续的数据后引起一次中断,然后再由主机进行下一块物理上连续的数据传输,那么这种方式就为blockDMA方式。Scatter-gatherDMA方式则不同,它使用一个链表描述物理上不连续的存储空间,然后把链表首地址告诉DMAmaster。DMAmaster在传输完一块物理连续的数据后,不用发起中断,而是根据链表来传输下一块物理上连续的数据,直到传输完毕后再发起一次中断。scatter-gatherDMA方式比blockDMA方式效率高。通常使用scatter ...
【技术保护点】
1.一种SG DMA的数据传输方法,其特征在于,包括以下步骤:1)以数组形式创建SG DMA数据传输链表一和链表二并且在内核空间中创建第一组缓冲区和第二组缓冲区;2)通过CPU将用户空间数据拷贝入第一组缓冲区并将链表一的地址写入IO设备;3)启动SG DMA数据传输,并通过CPU将另外的用户空间数据拷贝入第二组缓冲区;4)待SG DMA传输完成后,CPU将链表二的地址写入IO设备;5)启动进一步的SG DMA数据传输,并通过CPU将进一步的用户空间数据拷贝入第一组缓冲区,待进一步的SG DMA传输完成后,CPU将链表一的地址写入IO设备并且重复步骤3)到5)直到用户空间数据完全写入IO设备内存位置。
【技术特征摘要】
1.一种SGDMA的数据传输方法,其特征在于,包括以下步骤:1)以数组形式创建SGDMA数据传输链表一和链表二并且在内核空间中创建第一组缓冲区和第二组缓冲区;2)通过CPU将用户空间数据拷贝入第一组缓冲区并将链表一的地址写入IO设备;3)启动SGDMA数据传输,并通过CPU将另外的用户空间数据拷贝入第二组缓冲区;4)待SGDMA传输完成后,CPU将链表二的地址写入IO设备;5)启动进一步的SGDMA数据传输,并通过CPU将进一步的用户空间数据拷贝入第一组缓冲区,待进一步的SGDMA传输完成后,CPU将链表一的地址写入IO设备并且重复步骤3)到5)直到用户空间数据完全写入IO设备内存位置。2.根据权利要求1所述的方法,其特征在于,在内核空间中创建第一组缓冲区和第二组缓冲区包括每个链表对应一组内核空间缓冲区。3.根据权利要求2所述的方法,其特征在于,缓冲区数量对应链表节点数。4.根据权利要求3所述的方法,其特征在于,每个链表节点包括一个连续的物理缓冲区的物理地址。...
【专利技术属性】
技术研发人员:赵瑞东,王朝晖,陈亮甫,贾国强,
申请(专利权)人:山东超越数控电子股份有限公司,
类型:发明
国别省市:山东,37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。