一种基于SSD缓存的FC HBA及其设计方法
技术领域
本发明公开了一种基于SSD缓存的FC HBA及其设计方法,涉及网络存储中FC HBA的设计领域。
背景技术
现有的FC HBA(host bus adapter,存储设备总线适配器)大多是仅仅作为服务器和多个存储设备之间的数据传输桥,具有很小的数据缓存能力,如几KB。然而,服务器与存储设备之间的一次性数据传输能够传输的数据块较小,例如4KB,并且服务器与存储设备之间的数据访问还存在数据延时。这些方面都会导致存储网络IOPS(每秒进行I/O读写操作的次数)的降低,从而降低存储网络的性能。尤其是在服务器需要重复的使用某一些数据时,即需要重复读写存储设备上的某一些数据块,这将会降低存储网络中的FC传输信道的使用率,从而降低存储网络的数据传输率。
SSD(Solid State Disk)存储器,也称作固态硬盘,是一种利用DRAM芯片或FLASH芯片作为存储介质的存储器。SSD存储器读取速度相对机械硬盘更快,尤其是在随机数据读写上更是存在无与伦比的优势。但是相对与DDR3等主存储器,其在读写速度上具有较大差距,但是其在存储空间以及成本上则具有较大优势。因此,SSD存储器可以用作对读写速度要求较低的存储系统的大容量高速缓存。
发明内容
本发明所要解决的技术问题是:针对现有技术的缺陷,提出了一种以SSD存储器作为缓存的FC HBA的设计方法,这使得FC HBA具有大容量高速的数据缓冲区,能够有效提高服务器和存储设备之间的数据传输效率。
本发明为解决上述技术问题采用以下技术方案:一种基于SSD缓存的FC HBA设计方法,使用SSD存储器作为FC HBA的缓冲存储器,服务器与FC HBA之间采用PCIe接口进行通讯,存储设备与FC HBA之间采用FC接口进行通讯;SSD存储器对服务器与存储设备之间的数据以及存储设备与存储设备之间的数据进行缓冲存储,
(1)当SSD存储器中没有服务器所需的数据时,服务器直接通过FC接口获取存储设备数据;
(2)当SSD存储器中存在服务器或者存储设备需要的数据时,服务器或存储设备直接在SSD存储器中获取数据。
按照所述的一种基于SSD缓存的FC HBA设计方法所构造的一种基于SSD缓存的FCHBA,包括FPGA芯片、主存储器、SSD存储器、PCIe接口、FC接口,所述FPGA芯片内部实现有CPU、FC控制器、DMA控制器、SSD控制器、主存控制器、PCIe内核、交换总线;
CPU,用于协调FC控制器、DMA控制器、SSD控制器、主存控制器以及PCIe内核之间的相互数据访问;
SSD存储器,用于临时存放服务器与各个存储设备之间通过FC接口传输的数据;
SSD控制器,用于提供CPU以及DMA控制器对SSD存储器的数据访问支持;
主存储器,部分空间用于存放CPU运行过程中所需要的指令和数据;剩余空间则存储服务器与存储设备之间的数据传输中的部分数据;
主存控制器,用于提供CPU以及DMA控制器对主存储器的数据访问支持;
FC控制器,其内部设置FC IP内核,FC IP内核的数量和FC接口数量一致,FC控制器用于实现FC协议标准数据传输及其控制;
FC接口,用于连接FC HBA和存储设备,并支持它们之间的数据传输;
PCIe内核,用于实现PCIe协议标准数据传输及其控制;
PCIe接口,用于连接FC HBA和服务器,支持它们之间的数据传输;
交换总线,用于实现CPU、FC控制器、SSD控制器、DMA控制器、主存控制器以及PCIe内核之间的连接,并提供它们之间的数据访问通路;
DMA控制器,为SSD存储器与FC控制器、SSD存储器与PCIe内核、SSD存储器与主存储器、主存储器与FC控制器以及主存储器与PCIe内核之间的数据传输提供快速传送机制。
进一步的,所述CPU为PowerPC硬核,所述交换总线为PLB总线,所述主存控制器为DDR3控制器,所述PCIe内核遵循PCIe 2.0标准协议。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:以SSD存储器作为FC HBA的数据缓存,即为其提供一个大容量高速的缓冲存储器,缓存的容量可达100GB~2TB,甚至更大的范围。服务器只需对FC HBA中的SSD缓冲存储器进行访问即可得到需要的数据,无需对存储设备进行访问,即缩短了服务器到存储设备之间的数据延时,从而有效提高系统的IOPS。
使用SSD存储器作为FC HBA的数据缓冲存储器,可以为其提供大容量的缓存,因此可以支持在FC HBA内部做数据I/O聚合处理,即把每次的4KB等较小的I/O读写块聚合成为16MB、32MB或者更大的I/O读写块,从而有效提高传输信道的使用率。以SSD存储器作为缓存的FC HBA能够有效提高存储网络数据传输率。
附图说明
图1为本发明提出的以SSD存储器作为缓存的FC HBA的结构框图。
图2为本发明提出的基于SSD缓存的FC HBA的一个具体实施例。
图3为FC HBA的实施例中FPGA芯片的具体架构图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
图1所示为本发明提出的基于SSD缓存的FC HBA的系统架构,由FPGA芯片(Field-Programmable Gate Array,即现场可编程门阵列)、Mem(主存储器)、SSD存储器、PCIe接口和多个FC接口组成。FPGA芯片内部实现有CPU、FC Controller(FC控制器)、DMA Controller(DMA控制器)、SSD Controller(SSD控制器)、Mem Controller(主存控制器)、PCIe Core(PCIe内核)以及Crossbar(交换总线)。CPU 、DMA控制器分别和交换总线相连接,交换总线分别通过FC控制器、SSD控制器、主存控制器、PCIe内核和FC接口、SSD存储器、主存储器、PCIe接口相连接。
CPU是一个简单的处理器,主要用于协调FC控制器、SSD控制器、DMA控制器、主存控制器以及PCIe内核之间的相互数据访问。
SSD存储器用于临时存放服务器与各个存储设备之间通过FC接口传输的数据,即作为服务器与各个存储设备之间FC数据传输的数据缓存,从而为服务器与各个存储设备之间的FC数据传输提供一个大容量并且高速的数据缓冲器。
SSD控制器的作用是提供CPU以及DMA控制器对SSD存储器的数据访问支持。
主存储器的作用有两点,其中的一部分空间用于存放CPU运行过程中所需要的指令和数据;另一部分剩余空间则存储服务器与存储设备之间的数据传输中的部分数据,即与SSD缓冲存储器具有相同的功能。
主存控制器的作用是提供CPU以及DMA控制器对主存储器的数据访问支持。
FC控制器内有一个或多个FC IP内核,和FC接口数量一致。FC控制器以FC标准协议为基础,实现FC协议标准数据传输及其控制。
FC接口用于连接FC HBA和各个存储设备,并支持它们之间的数据传输。
PCIe内核以PCIe标准为基础,实现PCIe协议标准数据传输及其控制。
PCIe接口用于连接FC HBA和服务器,并支持它们之间的数据传输。
Crossbar实现了CPU、FC控制器、SSD控制器、DMA控制器、主存控制器以及PCIe内核之间的连接,并提供它们之间的数据访问通路。
DMA控制器为SSD存储器与FC控制器、SSD存储器与PCIe内核、SSD存储器与主存储器、主存储器与FC控制器以及主存储器与PCIe内核之间的数据传输提供快速传送机制。
基于SSD缓存的FC HBA中存在3条与服务器和存储设备相关的数据通路,分别如下所示:
(1)当SSD缓存中没有服务器所需的数据时,服务器直接通过FC接口获取存储设备数据;
(2)当FC HBA的数据缓存中存在服务器需要的数据时,服务器直接在SSD存储器中获取数据;
(3)当FC HBA的数据缓存中存在存储设备需要的数据时,存储设备直接从SSD存储器中获取数据。
图2所示为本发明提出的基于SSD缓存的FC HBA的一个具体实施例及其与存储网络中其他设备之间的连接关系。图2所示实施例包括一台服务器、两台存储设备以及一块FCHBA,其中FC HBA使用一块DDR3内存条作为主存。
图3所示为图2中实施例的FPGA芯片及其内部的结构,FPGA芯片使用Xilinx公司的一款芯片,其内部的CPU为FPGA芯片自身的PowerPC硬核,Crossbar则使用了PLB总线,主存控制器为DDR3控制器,PCIe内核遵循PCIe 2.0标准协议。
在图2所示的实施例中存在3条数据通路,如下所示:
第一条数据通路是指服务器与存储设备之间的直接数据传输,即SSD缓存或者DDR3主存中不存在服务器或存储设备所需的数据,其数据通路为服务器→FC HBA的PCIe内核→FC HBA的FC控制器→存储设备,或者是相反的数据传输方向;
第二条数据通路是指服务器与FC HBA的数据缓存(SSD存储器或DDR3主存)之间的数据传输,即FC HBA的数据缓存中存在服务器需要读取的数据或者需要写入的数据的缓存映射,其数据通路为FC HBA的数据缓存(SSD存储器或者DDR3主存)→FC HBA的PCIe内核→服务器,或者相反的数据传输方向;
第三条数据通路是指存储设备与FC HBA的数据缓存(SSD存储器或DDR3主存)之间的数据传输,即FC HBA的数据缓存中存在服务器需要读取的数据或者需要写入的数据的缓存映射,其数据通路为FC HBA的数据缓存(SSD存储器或者DDR3主存)→FC HBA的FC控制器→存储设备,或者相反的数据传输方向。