论文部分内容阅读
网络传输是计算机应用中最重要的功能之一,需要操作系统、设备驱动程序以及网络适配器硬件共同支持来保证网络数据的高吞吐率和系统资源的低消耗占用。本文面向Windows操作系统,基于PKUnity86系统芯片和AMBA(AdvancedMicrocontroller Bus Architecture)片内总线接口的网络适配器,开展支持高吞吐率和低系统资源占用率的设备驱动程序设计和优化工作。 本文基于PKUnity86系统芯片以及对应的软硬件协同开发平台,完成对PKUnity86系统芯片中网络适配器模块的Windows驱动程序的设计和优化。首先在PCI虚拟化机制的支持下,解决为AMBA总线设备开发Windows驱动需要面对的两个挑战:设备访问方式和存储一致性;然后根据Windows网络体系架构以及PKUnity86网络适配器的硬件特性,设计了使用动态变长数据缓冲区域进行数据缓冲的方式以及使用中断节流和延迟过程调用的中断方式。 本文根据之前的设计完成Windows NT系列操作系统中驱动程序的实现,并基于此完成对Windows7驱动程序的开发;并通过与RTL8139和Intel e1000两款商用网络适配器以及Linux平台下PKUnity86网络适配器对比进行性能分析,找到其在存储相关操作中的性能瓶颈,并使用零拷贝策略和帧描述符回收技术设计对驱动的优化策略。 评测结果表明,基于PKUnity86平台下,通过PCI虚拟化等机制,本文设计的驱动程序能够在Windows操作系统中正确驱动AMBA总线接口的网络适配器,在百兆网络环境和千兆网络环境下,与同级别的使用PCI总线的外置网络适配器性能相当。同时,在出现资源竞争的情况下,优化后驱动程序的数据吞吐率在百兆环境下比RTL8139提高了8.9%,在千兆环境下比Intel e1000提高了1.2%。