文档介绍:上海交通大学
硕士学位论文
电子束曝光系统中高速数据传输卡的软件设计
姓名:孙勤林
申请学位级别:硕士
专业:软件工程
指导教师:戚正伟;隋国荣
20100101
电子束曝光系统中高速数据传输卡的软件设计
电子束曝光系统中高速数据传输卡的软件设计
摘要
在开发电子束曝光系统中控制部分的软硬件时,根据系统设计要求,需要数据处理
速度达到 300MB/s 以上,由于实际数据处理单元都是由高速现场可编程门阵列(Field
Programmable Gate Array, 简称 FPGA)以硬件方式实现的,数据处理单元的速度足以满
足系统要求。系统的速度瓶颈在于数据的传输部分,即从数据服务器传输到数据处理单
元。为了解决这个问题,实际系统开发时,为数据服务器开发了一块专门用于高速数据
传输的数据传输卡。该数据传输卡采用了 PCI Express(ponent Interconnect
Express)接口与主机进行数据通信,并利用 FPGA 的 Aurora 控制器通过光纤与数据处
理单元进行高速数据传输。
高速数据传输卡采用 PCI Express 接口与主机进行通信是由于 PCI Express 总线能提
供足够的带宽。由于 PCI Express 一个通道能提供 的带宽[1],该高速数据传输卡
采用了 x4 的方式,理论上可以达到 1GB/s 的有效带宽。在实际开发时并不能完全发挥
总线的带宽,但达到 40%的效率还是可以保证的,即该设备至少能达到 400MB/s 的速
度,在硬件层该数据传输卡保证了系统设计的目标。
在软件设计时,首先要为数据传输卡开发一个驱动程序。系统中数据服务器采用了
x86_64 的系统构架,并使用了 64bit 的 Linux 操作系统。因此就要在 Linux 系统下为数
据传输卡开发驱动程序。驱动程序除了为应用程序提供访问硬件设备的接口之外,还要
采用合适的驱动开发技术保证硬件设备的性能得以最大限度的发挥。
高速数据传输卡是通过 DMA(Direct Memory Access)方式与数据服务器主机进行大
数据量的高速传输的。驱动程序在处理 DMA 操作时,最主要的就是为 DMA 数据传输
分配物理地址连续的内存块,同时用于 DMA 传输的内存块还需要满足高速缓存的一致
性[2]。
通常情况下,由于应用程序不能直接访问内核地址空间,应用程序对设备的访问采
用双拷贝的方式,驱动程序需要在内核地址空间缓冲区与用户空间缓冲区之间进行数据
V
电子束曝光系统中高速数据传输卡的软件设计
拷贝,同时还需要在内核地址空间缓冲区与设备间进行数据拷贝。如果采用双拷贝方式,
在 DMA 操作时,驱动程序先要将用户空间的数据拷贝到内核空间的 DMA 缓冲区,再
通过 DMA 操作将 DMA 缓冲区的数据传输出去。虽然内存拷贝本身速度很快,但对于
高速 DMA 传输而言,应用程序缓冲区与内核空间缓冲区的数据拷贝过程还是会很大程
度上影响系统的性能。因此在驱动程序开发时采用了 mmap 方式。通过 mmap 方式可以
将 DMA 缓冲区所对应的物理地址映射到用户进程空间,让用户程序通过用户空间的虚
拟地址直接访问 DMA 缓冲区,即将数据直接存入内核 DMA 缓冲区中,将用户空间缓
冲区与内核 DMA 缓冲区之间的拷贝过程去掉,从而提高系统性能。通过对系统的实际
测试,采用双拷贝方式时的平均速度是 ,采用 mmap 方式时的平均速度是
。采用 mmap 方式后数据传输速度比双拷贝方式提高了 60%,并且达到了系
统的性能要求。
关键词 PCIe 总线,字符型驱动,DMA 传输,中断处理,mmap 映射
VI
电子束曝光系统中高速数据传输卡的软件设计
SOFTWARE DESIGN FOR
HIGH SPEED DATA TRANSFER CARD
IN EB EXPOSURE SYSYTEM
ABSTRACT
The performance requirement of data process in EB Exposure System is above 300MB/s.
To match the performance requirement, the data process unit is implemented by high speed
FPGA (Field Programmable Gate Array). So the da