一种优化收包设备上的软件操作PCI空间寄存器效率的系统和方法
技术领域
本发明属于网络数据处理领域,具体涉及一种优化收包设备上的软件操作PCI空间寄存器效率的系统和方法。
背景技术
在很多专用的高速收包设备上,软硬件往往共享一个报文缓冲区,硬件向缓冲区内写入报文,软件从缓冲区内读出报文,软硬件之间一般通过硬件pci空间的寄存器实现信息交互,其中交互的一个重要信息是报文缓冲区的读写指针,读指针指示软件读取到了缓冲区的什么位置,写指针指示硬件写入到了缓冲区的什么位置。
专利号为“CN201010123369.3”、发明名称为“一种I/O监控方法”公开了一种I/O监控方法,所述方法包括:1.1检测对虚拟硬件设备的端口访问的类型;1.2当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;1.3当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,实现在设备底层对端口的监控。
专利号为“CN03822682.0”、发明名称为“用于控制多个输入/输出设备的方法、系统和程序”公开了一种用于控制耦合到局部总线的一个或多个I/O设备的方法、系统和产品。局部总线功能与所述一个或多个I/O设备相关联。对应于所述局部总线功能的寄存器被配置为存储器地址。经由所配置的寄存器来控制所述一个或多个I/O设备。
在上述方案中,通过读写指针操作缓冲区时,为避免软硬件操作缓冲区的冲突,软硬件每次对缓冲区的操作必须判断和操作读写指针,硬件向报文缓冲区中写入报文前,要查看并比较读写指针寄存器,判断缓冲区是否有空闲空间,写入报文后,要修改写指针寄存器通知软件报文已经被写入。软件从缓冲区收取报文前,要查看并比较读写指针寄存器,判断缓冲区是否有报文,读出报文后,要修改读指针寄存器通知硬件报文已经被读取。在高速设备上,软件每收到一个包都要对硬件保存读写指针的pci空间的寄存器进行读写操作,会带来系统性能的降低。
发明内容
本发明克服现有技术存在的不足,优化软硬件交互方法,减少软件操作pci空间寄存器的次数。
本发明提供了一种优化收包设备上的软件操作PCI空间寄存器效率的系统,包括软件模块和pc i空间寄存器模块,其特征在于软件模块包括读指针缓存模块和写指针缓存模块。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的系统,其pci空间寄存器模块包括读指针寄存器模块和写指针寄存器模块,分别对应于读指针缓存模块和写指针缓存模块。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的系统,其读指针寄存器模块中的读指针,在读指针缓存模块中进行缓存。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的系统,其写指针寄存器模块中的写指针,在写指针缓存模块中进行缓存。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的系统,其软件模块包括更新缓存变量和寄存器的步长的参数。
本发明还提供了一种优化收包设备上的软件操作PCI空间寄存器效率的方法,其软件中分别设置了一个读指针和一个写指针的缓存变量,以及一个更新缓存变量和寄存器的步长的参数。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的方法,所述软件开始运行时,把pci空间的所述写指针寄存器读取到所述软件的写指针变量中缓存,并使所述软件的所述读指针等于所述写指针。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的方法,每次收包时,所述软件检查缓存的读写指针变量,如果读写指针变量不相等,则读取报文,移动缓存的所述读指针。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的方法,所述软件缓存的所述读写指针相等,或者到达了预设的步长参数的时间段,则把所述软件缓存的所述读指针写到所述PCI空间中,并把所述pci空间的所述写指针读取到所述软件缓存的所述写指针变量中。
本发明提供的优化收包设备上的软件操作PCI空间寄存器效率的方法,硬件收到报文时,判断所述读写指针寄存器内的值,如果所述写指针和所述读指针之间有足够的空闲缓冲区,则把报文写入缓冲区,并修改所述写指针寄存器的值。
本发明在软件中分别设置了一个读指针和一个写指针的缓存变量,用来缓存pci空间寄存器中的读写指针,在一定的时间范围内,软件收包时只对软件中的读写指针变量进行操作,不对pci空间的寄存器进行操作,每隔一个时间段,才把软件中最新的读指针写入pci空间的读指针寄存器,把pci空间的写指针读取到软件的写指针变量中。
与现有技术相比,本发明的有益效果在于:避免软硬件操作缓冲区的冲突;优化收包设备上软件操作PCI空间寄存器的效率。
附图说明
图1是本发明的结构示意图。
具体实施方式
图1是本发明的结构示意图,包括软件模块和pci空间寄存器模块,软件模块包括读指针缓存模块和写指针缓存模块。其中pci空间寄存器模块包括读指针寄存器模块和写指针寄存器模块,分别对应于读指针缓存模块和写指针缓存模块。其中读指针寄存器模块被用来写入读指针缓存模块的指针,而写指针寄存器模块用于向写指针缓存模块写入其存储的指针。
此外其软件模块包括更新缓存变量和寄存器的步长的参数,用以预设时间段。
本发明的实现方法和过程如下:
(1)软件中分别设置了一个读指针和一个写指针的缓存变量,以及一个更新缓存变量和寄存器的步长(可以为时间段或表示时间段的收包数)。
(2)软件开始运行时,把pci空间的写指针寄存器读取到软件的写指针变量中缓存,并使软件的读指针等于写指针。
(3)每次收包时,软件检查缓存的读写指针变量,如果读写指针不相等,则读取报文,移动缓存的读指针。
(4)如果软件缓存的读写指针相等,或者到达了预设的时间段,则把软件缓存的读指针写到PCI空间读指针寄存器中,并把pci空间写指针寄存器的写指针读取到软件缓存的写指针变量中。
(5)硬件收到报文时,判断PCI空间读写指针寄存器内的值,如果写指针和读指针之间有足够的空闲缓冲区,则把报文写入缓冲区,并修改写指针寄存器的值。
本发明避免软硬件操作缓冲区的冲突;优化收包设备上软件操作PCI空间寄存器的效率。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所述领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者同等替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。