System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及直接内存访问,尤其涉及一种流水线型直接内存访问的数据访问方法及系统。
技术介绍
1、直接内存访问(direct memory access,dma)是一种计算机技术,允许外部设备(如网络接口卡nic,简称网卡)直接访问计算机内存,而无需通过中央处理器(cpu)的干预。这种直接访问可以显著提高数据传输的速度和效率。
2、如图1所示,有线网卡4和计算机1之间通过dma实现数据交互;其中,计算机1包括控制器2(如中央处理器cpu)和内存3,有线网卡4包括媒体访问控制(media accesscontrol,mac)层和物理层(physical layer,phy)。当计算机1需要发送或接收数据时,cpu会将数据传输的任务交给dma控制器,然后dma控制器会直接将数据从内存3传输到有线网卡4,或者从有线网卡4传输到内存3中,这里数据传输的操作即通过dma来实现,而无需cpu的干预,这样可以减少cpu的负担,从而大大提高数据传输的速度和效率,并允许设备之间直接进行数据交换。
3、现有技术中,在网卡驱动软件中通常是采用循环dma的方法来进行数据传输。循环dma的传输方式是通过定义一个由n个dma描述符组成的传输链表来实现的,如图2所示,驱动软件首先从第一个dma描述符开始遍历,如果发现第一个描述符有效,驱动执行相应的读取数据和发送数据操作,并将该dma描述符放入待完成列表中;然后驱动继续查询下一个dma描述符,执行与前一个描述符相同的操作,直到遍历到最后一个dma描述符,此时待完成列表中的dma描述符已
4、然而,这种循环dma的传输方式存在一个问题,当最后一个dma描述符完成传输后,如果第一个dma描述符还没有准备好,就会导致没有可用的dma描述符,而此时网卡仍处于接收数据包的过程中,这很容易导致数据丢失,进而影响上层应用的正常运行。
技术实现思路
1、为了解决以上技术问题,本专利技术提供了一种流水线型直接内存访问的数据访问方法及系统。
2、本专利技术所解决的技术问题可以采用以下技术方案实现:
3、本专利技术的第一方面是提供一种流水线型直接内存访问的数据访问方法,包括:
4、步骤s1,在驱动初始化时,建立m个硬件描述符和n个软件描述符,以及所述硬件描述符和所述软件描述符之间的初始映射关系;其中,所述软件描述符的数量n是所述硬件描述符数量m的k倍,k为大于1的自然数,且所述软件描述符与内存中的缓冲区一一对应;
5、步骤s2,根据所述初始映射关系、所述硬件描述符以及所述软件描述符,实现所述直接内存访问在数据传输过程中对所述内存的访问,以接收数据包;
6、步骤s3,在所述硬件描述符接收到数据包后,重新建立所述硬件描述符和所述软件描述符之间新的映射关系;
7、步骤s4,根据所述新的映射关系、所述硬件描述符以及所述软件描述符,实现所述直接内存访问在数据传输过程中对所述内存的访问,再次接收数据包。
8、优选地,所述步骤s1包括:
9、步骤s11,在驱动初始化时,建立一硬件描述符池,所述硬件描述符池中包括m个所述硬件描述符;
10、步骤s12,根据所述硬件描述符的数量建立一软件描述符池,所述软件描述符池中包括n个所述软件描述符;
11、步骤s13,从所述内存为所述软件描述符池中的n个所述软件描述符分配一一对应的所述缓冲区;
12、步骤s14,建立所述硬件描述符和所述软件描述符之间的初始映射关系。
13、优选地,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
14、所述初始映射关系用于表征所述第一索引和所述第二索引之间的一一对应关系,且所述初始映射关系中所述第一索引和所述第二索引的索引值为从索引0开始一一对应。
15、优选地,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
16、所述新的映射关系用于表征所述第一索引和所述第二索引之间的一一对应关系,且所述新的映射关系中所述第二索引的索引值为所述初始映射关系中与所述第一索引一一对应的第二索引的索引值加m。
17、优选地,在所述第二索引的索引值超过n-1时,将所述第二索引的索引值置0,并重新从索引0开始与所述第一索引一一对应。
18、优选地,所述步骤s4之后还包括:
19、步骤s5,在卸载驱动时,删除所述新的映射关系,以释放所述硬件描述符和所述软件描述符的资源。
20、本专利技术的第二方面是提供一种流水线型直接内存访问的数据访问系统,包括:
21、初始映射单元,用于在驱动初始化时,建立m个硬件描述符和n个软件描述符,以及所述硬件描述符和所述软件描述符之间的初始映射关系;其中,所述软件描述符的数量n是所述硬件描述符数量m的k倍,k为大于1的自然数,且所述软件描述符与内存中的缓冲区一一对应;
22、第一接收单元,连接所述初始映射单元,用于根据所述初始映射关系、所述硬件描述符以及所述软件描述符,实现所述直接内存访问在数据传输过程中对所述内存的访问,以接收数据包;
23、重映射单元,连接所述初始映射单元,用于在所述硬件描述符接收到数据包后,重新建立所述硬件描述符和所述软件描述符之间新的映射关系;
24、第二接收单元,连接所述重映射单元,用于根据所述新的映射关系、所述硬件描述符以及所述软件描述符,实现所述直接内存访问在数据传输过程中对所述内存的访问,再次接收数据包。
25、优选地,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
26、所述初始映射关系用于表征所述第一索引和所述第二索引之间的一一对应关系,且所述初始映射关系中所述第一索引和所述第二索引的索引值为从索引0开始一一对应。
27、优选地,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
28、所述新的映射关系用于表征所述第一索引和所述第二索引之间的一一对应关系,且所述新的映射关系中所述第二索引的索引值为所述初始映射关系中与所述第一索引一一对应的第二索引的索引值加m。
29、优选地,所述重映射单元包括:
30、重置模块,用于在所述第二索引的索引值超过n-1时,将所述第二索引的索引值置0,并重新从索引0开始与所述第一索引一一对应。
31、本专利技术技术方案的优点或有益效果在于:
32、本专利技术通过建立软件描述符的数量是硬件描述符数量的倍数级,使得软件描述符完成一次环形操作的同时,硬件描述符已经完成了多次环形操作,从而达到软件描述符和硬件描述符都有环形的效果,以流水线的形式实现dma,防止数据传输过程中的丢包风险,提升dma性能。
本文档来自技高网...【技术保护点】
1.一种流水线型直接内存访问的数据访问方法,其特征在于,包括:
2.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述步骤S1包括:
3.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
4.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
5.根据权利要求4所述的流水线型直接内存访问的数据访问方法,其特征在于,在所述第二索引的索引值超过N-1时,将所述第二索引的索引值置0,并重新从索引0开始与所述第一索引一一对应。
6.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述步骤S4之后还包括:
7.一种流水线型直接内存访问的数据访问系统,其特征在于,包括:
8.根据权利要求7所述的流水线型直接内存访问的数据访问系统,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
9.根据权利要求7所述的流水线型直接内存访问的数据访问系统,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
10.根据权利要求9所述的流水线型直接内存访问的数据访问系统,其特征在于,所述重映射单元包括:
...【技术特征摘要】
1.一种流水线型直接内存访问的数据访问方法,其特征在于,包括:
2.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述步骤s1包括:
3.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
4.根据权利要求1所述的流水线型直接内存访问的数据访问方法,其特征在于,所述硬件描述符与第一索引相对应,所述软件描述符与第二索引相对应;
5.根据权利要求4所述的流水线型直接内存访问的数据访问方法,其特征在于,在所述第二索引的索引值超过n-1时,将所述第二索引的索引值置0,并重新从索...
【专利技术属性】
技术研发人员:顾晓江,
申请(专利权)人:裕太微电子股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。