论文部分内容阅读
今天,随着信息技术的突飞猛进,在商业运转和学术研究中产生了越来越多的海量数据。随着存储区域网络(SAN)的应运而生,它已成为人们解决存储带宽、容量和管理问题的首选方案。SAN是一种将远方存储设备(如磁盘阵列、磁带库、光盘库)连接到服务器,并且能够使服务器上的客户应用将其作为本地存储设备进行访问的网络体系。FC SAN是出现最早、应用最广的一种SAN,其网络基于光纤通道技术,高效、稳定、安全是其主要优势。光纤通道HBA卡是将主机接入FC SAN必不可少的设备。它通常插在服务器主板的PCI-X或PCI Express插槽中,为服务器提供到存储设备的物理连接。它的核心协议是FCP协议。该协议位于FC协议族的FC-4层,实现了SCSI到光纤通道的映射。本文的目的就是设计并实现一块HBA卡。技术核心和难点就是如何用硬件和软件实现HBA卡的核心协议――FCP协议,因为不同的实现方案会对HBA卡的I/O性能产生决定性的影响。本文的主要工作就是设计了一套FCP硬件辅助处理的方案,将FCP协议中大量重复性的简单工作交给硬件完成(如SCSI数据的分割与重组)。驱动将不再以FC帧为单位进行处理,只需要在SCSI I/O操作的开始和结束时进行交换管理即可。这极大地减少了中断的次数、降低了CPU的负担。设计的硬件开发环境是Xilinx FPGA开发板ml506,通过verilog HDL实现了FCP辅助处理的硬件逻辑。并在2.6.18内核版本的Redhat Linux环境下开发了驱动程序。本文首先对HBA卡的相关协议(主要是FCP协议)进行了介绍,包括FCP I/O操作流程、FCP信息单元等。而后描述了FCP硬件辅助处理方案,并大致介绍了该方案下的软硬件接口、硬件的模块功能划分以及驱动的结构和处理流程。接着就对硬件各个模块的实现进行了详细阐述,并描述了软件的数据结构和重要函数。最后,我们搭建了测试环境,并对测试结果进行分析,还对目前系统的不足提出改进的方向。