导言
由于现在的PCI、CPCI、VME等体系的继续传输速度很难逾越400MB/s,因而要完结实时、长期的收集存储功用,本规划挑选完结一种依据PCI-E的体系,PCI-E是第三代接口通讯协议(3GPIO)。传统的PC主机北桥只要一个高速的PCI-E X16接口,本文运用带G31北桥的芯片组的技嘉主板GA-G31M-ES2C为例来进行评论,尽管G31-ICH7芯片组在南桥上可供给4个PCI-E ×1接口,可是由于其他I/O端口资源的占用,该主板在北桥上仅供给了一个PCI-E ×16的插槽,南桥也只供给一个PCI-E ×1插槽。因而假如只选用G31/ICH7芯片组的电脑树立一个PCI-E收集存储体系,它只能完结PCI-E 1.0 单通道的收集存储体系,带宽就被约束在200MB/s内。而这种格式首要是由于计算机北桥只供给一个PCI-E插槽,不能一起满意高速收集和存储的衔接需求,因而扩展主机北桥上的PCI-E接口,将整个收集存储都树立在北桥上变得至关重要。
体系结构剖析
Intel(英特尔)公司最新的双通道DDR3内存以及下一代双×16 PCI-E 2.0的计算机芯片组技能供给了一种更新的个人电脑的架构,这些技能被运用到X38、X48和X58等计算机芯片组中。本文以X58为例,图1为X58芯片组的体系架构。
图1 X58芯片组的体系架构
X58芯片组调配新南桥ICH10或%&&&&&%H10R,可支撑四条PCI-E ×16插槽(其间两条契合PCI-E 2.0规范),依据通道数的要求可组成四种不同方法,当然它只支撑双图形处理器(GPU)协同运转的技能CrossFire,仍不支撑Scalable Link Interface(SLI)技能。SLI技能是主板能够一起运用两块同类型PCI-E显卡的一种技能,一起芯片间通讯经过相似AMD HyperTransport总线技能的QPI总线技能完结,凭借PCI-E通道可带来最高25.6GB/s的双向带宽,而现在的前端总线Front Side Bus(FSB)则被彻底弃用。咱们能够直接运用X58芯片组构建一个高速实时的体系,但由于现阶段很少有能够彻底运用PCI-E ×16带宽的收集卡,因而将资源进行切割,运用多块收集模块组成一个收集体系,经过PCI-E Switch扩展接口的办法能够将X58芯片组扩展成为一个更高速、兼容更多模块的收集存储体系。
DMI(Direct Media Interface)直接媒体接口是Intel公司开发用于衔接主板南北桥的总线,替代了曾经的Hub-Link总线。DMI选用点对点的衔接方法,时钟频率为100MHz,由于它依据PCI-E总线,因而具有PCI-E总线的优势。DMI完结了上行与下行各1GB/s的数据传输率,总带宽到达2GB/s,但DMI还要与其他I/O设备进行通讯,因而假如挑选南桥的PCI-E端口进行传输,传输速度将遭到很大的约束,抱负情况下至多只能完结1GB/s的传输存储速度。因而,本体系在计算机中DMI以上的结构中完结数据的传输和存储。咱们能够将衔接在芯片G31 GMCH的PCI-E ×16端口经过一个PCI-E Switch进行扩展,扩展后的结构相当于主机北桥供给了多个高速的PCI-E接口,构成一个相似于图1中的X58架构,然后使整个传输存储进程不受DMI双向2GB/s速度的影响。
运用北桥PCI-E扩展技能,将一切的收集卡和存储卡都衔接到主机的北桥端,可使整个数据传输不受主机DMI等的速度瓶颈约束,假如仅仅运用PCI-E ×4对体系进行扩展,抱负的有用数据传输速度也可达800MB/s,并且由于PCI-E协议是双向一起传输的,因而将收集卡和存储卡一起衔接到一个端口并不会影响其传输和存储的功率。
体系规划
PCI-E Switch
PCI-E Switch为整个体系供给扩展端口,体系中一切的PCI-E接口都是经过PCI-E Switch芯片扩展出来的,相似的能够当作将多个PCI-E插槽直接衔接到主机的北桥上。图2为含PCI-E的拓扑结构图,经过Switch能够将一个上游设备口扩展多个下流端口,此外PCI-E Switch还能够级联。经过一个多通道的PCI-E Switch可扩展构建一个多收集卡多存储设备的实时高速收集存储体系。
图2 含PCI-E Switch的拓扑结构图
本方案选用的是PLX公司的一块PCI-E Switch芯片PEX8616,它是一款能够设置4个接口并具有16个通道的PCI-E Switch芯片,并可设置每个接口的通道数。其支撑通明桥(TB)、非通明桥(NTB)两种方法,即能够支撑两个及以上的多主机体系和多智能I/O端口的模块。PEX8616每个通道含有两个虚拟端口,且支撑热插拔。由于首要意图是将北桥上的PCI-E ×16插槽扩展成为多个PCI-E接口。因而,本体系中将其分为四个PCI-E ×4的接口。端口号为0、1、5和6,将与主机衔接的端口0设置为上游端口,其他三个端口则为下流端口,衔接收集卡和RAID存储卡。
PCI-E数据传输方法包括地址路由和ID路由等方法,PCI-E设备在体系中都有一个ID,依据所在的PCI总线号、设备号和功用号来确认。一个PCI-E Switch能够当作多个P2P桥的调集,并且在上游设备和下流设备之前还虚拟了一条总线。
体系与桥
通明桥体系是指整个体系中只含一个主机设备,其他一切设备都是以端点设备的方法呈现。一切下流设备不能自发进行数据传输,只要在上位机引导下进行数据传输。收集卡能够经过DMA等方法将数据传输到上位机的内存中的某个区域,然后再将内存中的数据存储到磁盘阵列中。由于存储和读取同一块内存,因而在软件上能够多拓荒几块内存,运用多线程躲避体系次序履行所带来的推迟,进步传输和存储的速度。
图3 依据PCI-E Switch的非通明桥体系
PEX8616供给非通明桥,非通明端口坚持处理器的电气及逻辑阻隔,能够避免主机罗列端口后边的设备,然后阻隔这今后的处理器及内存空间。非通明端口答应翻开窗口以交流数据,经过地址转化,数据从端口的一侧中传输别的一侧。每个处理器把非通明端口的另一端当作一个下流设备,并把它映射到自己的地址空间。运用非通明端口的地址翻译才能,处理器之间能够经过PCI-E总线进行通讯。因而体系构建能够考虑引进非通明桥,在上位机存在的情况下,让收集卡或许存储卡也作为一个主机端,数据在收集存储进程中能够直接绕开PC主机进行,当数据进行反演时,上位机再作为上游,对磁盘阵列进行操作和操控。
图3为一种非通明桥的体系,其间包括两个Host Bridge和PCI-E Root Complex,其间本地设备体系中的Root Complex衔接到PCI-E Switch的一个NT端口上,然后在主体系的PCI结构中把它作为一个下流设备。PCI-E Switch衔接两个独立的处理器域,本地设备的资源和地址对主体系是不行见的。答应本地处理器独登时装备和操控其子体系。主体系和本地体系的时钟彻底独立。主体系和本地体系的地址彻底独立,在主体系和本地体系之间能够进行地址翻译。添加了阻隔主体系、本地体系总线之间地址域的功用。
在构建收集存储体系的进程中能够将收集模块或许存储模块以构建本地体系的方法完结,然后能够在收集数据后直接对数据进行预处理然后再送到PCI-E总线进行存储或许能够在存储之后直接在本地体系进行回放或许供给网口拜访存储数据等功用。
收集存储体系的完结
体系结构
体系由PC主机、PCI-E Switch背板、收集卡和RAID存储卡组成。在完结背板规划后,先运用一块PEX8311接口芯片的收集卡,Rocket RAID 2680磁盘阵列卡,完结一种高速收集存储的体系。可是由于一般的PC机箱的空间有限,假如将PCI-E Switch背板与上位机的接口直接以PCI-E金手指的方法,则当背板接入主机后,很难发明一个空间能够包容其他板卡插到背板上。并且由于磁盘阵列是由多个Western Digest WD3200AAJS的硬盘构成,发热量也成为一个很显着的问题。
因而本方案考虑经过引进Cable PCI-E来改进体系。Cable PCI-E是依据PCI-E用于服务器、台式机和笔记本的下一代外围总线,它具有以下的长处:
• 本钱较低,由于PCI-E广泛用于各种主机;
• 高带宽,Gen1 ×4 Cable的带宽即到达1GB/s;
• 低推迟,300ns~700ns;
• 兼容性强,体系软件上彻底兼容PCI方法;
• Cable PCI-E至少由15种规范构成;
• 仅有能够一起运用于Chip-to-Chip、board-to-board和box-to-box的规范。
PCI-SIG规范安排将Cable PCI-E界说为一种依据PCI-E的根本规范的扩展,经过线缆化将PCI-E协议扩展到box-to-box运用和完结长距离的传输是发生Cable PCI-E规范的意图。Cable PCI-E供给一种简略并且具有高功能的总线,便利扩展PC以及测验I/O等设备。本方案便是运用Cable PCI-E便利扩展设备的特色,将整个收集存储体系彻底别离到PC机箱外,终究能够独立构建成一个机箱构成一种box-to-box的方法,使得整个体系的可扩展性很强,PCI-E ×4及其以下的COST收集板卡和存储卡均能够很好的运用于本体系中。独立的机箱也为磁盘阵列中的硬盘供给满意的空间,体系的散热也能得到很好的保证。
体系的结构图如图4所示,整个体系环绕PCI-E Switch构建而成,经过两个Cable PCI-E将体系的各个模块独立开来。由于收集卡选用的为PEX8311,故收集卡与PCI-E Switch衔接的通道数为1,在后续的研讨中能够晋级收集的收集和接口速度然后完结整个体系的晋级。磁盘阵列卡是一款消费类产品,Rocket RAID 2680不能供给HOST功用,因而本案构建的是一个通明桥体系。
图4 PCI-E Switch收集存储体系结构图
数据的收集、传输和存储
数据收集
收集板AD选用TI ADS6145芯片,采样位数为14bit,最高采样频率为125Mbps。AD收集后的数据接入到Xilinx公司Spartan-3ADSP系列的FPGA芯片XC3SD3400A。由于PEX8311接口芯片可支撑8位、16位、32位数据的传输,为了进步数据传输的功率,一起也为了使得数据收集速率取得相对进步。本规划中PEX8311中选用32位数据传输。所以在本方案FPGA数据流逻辑操控中,不只要完结数据的缓存以及数据传输逻辑的操控,还要进行数据位的改换扩展,由14位数据扩展为32位数据。
数据传输和存储
数据传输是指的从PEX8311到主机内存的进程。本方案挑选DMA方法进行,由于PEX8311内建两个DMA通道。本方案运用其间的一个,DMA通道0。在装置PLX供给的SDK以及驱动后,能够经过其供给的API开发包中的函数对PEX8311和PEX8616进行操控和拜访。一般的DMA传输进程是无需CPU的参加的,可是含Burst的DMA操作仍是要经过CPU的参加的,与独自的一次读写操作比较,Burst只需求供给一个开端地址就行了,今后的地址顺次加1,而非Burst操作每次都要给出地址,以及需求中心的一些应对、等候状况等等。假如是对地址接连的读取,Burst功率高得多,但假如地址是跳动的,则无法选用Burst操作。PEX8311的DMA传输支撑Single Burst 、Burst-4LW和Infinite Burst三种突发方法,表1为三种突发方法在不同单次传输字节数的情况下的传输速度比照。
表1 DMA传输在三种突发方法下的速度比照(MB/s)
由表1数据可调查出,选用后两种突发方法进行DMA传输时,速度较一般DMA传输方法有显着的进步,因而本方案选用Infinite Burst突发方法进行DMA传输,运用接连的地址,以进步DMA传输的速度。
PLX公司SDK中供给的函数可对PEX8311和PEX8616进行一系列操控和操作,DMA通道的参数设置在翻开DMA通道的时分一起完结,经过设置函数PlxPci_DeviceOpen()中的PLX_DMA_PROP结构体能够设置DMA传输的突发方法、本地总线带宽和传输方向等参数。在体系初始化进程中设置以上参数。当整个收集存储进程完结时,则需求进行对整个工程的封闭作业,相同是经过SDK中的函数PlxPci_DeviceClose()来封闭DMA通道。然后开释拓荒的一切内存块空间,并将指针赋NULL值。体系接连存储的整个进程从开端到完毕,尽管进行了很多个DMA传输的操作,可是只进行了一次DMA通道的翻开和封闭,然后尽可能低的减小由于这部分时刻带来的速度影响。软件流程如图5所示。
图5 收集存储体系软件流程图
依据图5能够调查到体系引进了多线程技能,多线程技能的完结是经过别离创立两个函数,一个操控DMA操控器进行接连的数据传输,另一个用于将内存中的数据快速的存储到磁盘阵列中,然后创立成为两个线程。当预备开端进行数据传输的时分,首先是设置DMA传输的参数并翻开DMA通道。在此进程中还需求恳求多块内存空间进行缓存数据,由于运用多线程技能,因而一块内存空间不能一起供两个函数一起读写,因而创立多个内存块,然后将两个线程一起翻开,对拓荒的多个内存块顺次进行读写操作,可是由于整个进程只包括一个极短的时刻推迟,因而彻底能够将整个读写内存的进程近似的当作一个一起进行读写操作,因而到达进步存储的速度的意图。
传输速度剖析
RAID 0又称为Stripe或Striping,它代表了一切RAID等级中最高的存储功能。RAID 0进步存储功能的原理是把接连的数据涣散到多个磁盘上存取,这样,体系有数据恳求就能够被多个磁盘并行的履行,每个磁盘履行归于它自己的那部分数据恳求。这种数据上的并行操作能够充分运用总线的带宽,显着进步磁盘全体存取功能。
表2 RAID0方法下读写阵列速度比较(MB/s)
该体系在实践的收集存储进程中,接连存储的速度在135MB/s,因而用两块或许三块磁盘组成的RAID 0阵列就能彻底满意规划要求。由于存储的速度仍显着高于收集卡DMA传输的速度,并且能够经过扩展RAID卡上的硬盘数进一步添加磁盘阵列存储速度。表2的试验数据运用四个Western Digest WD3200AAJS硬盘,由于运用相同巨细或许标准的硬盘能够更好的运用所用的磁盘空间。由表中的数据能够看出,跟着磁盘数意图添加,其存储的各项目标均有显着的进步,该磁盘阵列卡Rocket RAID 2680最多可供给8块SATA硬盘,跟着收集卡收集传输的速度的进步,能够用更多的磁盘组成磁盘阵列,来匹配前端收集卡的带宽,所以整个体系只需替换一个更高速的PCI-E收集卡就能够完结更高存储速度的高速收集存储体系。
图6 高速收集存储体系相片
定论
规划一个依据PC主机北桥的长期不间断高速收集和存储的体系。运用PC北桥PCI-E扩展技能,将收集卡和存储都衔接到计算机北桥,此法能够用于后续通道进一步扩展的运用中。本文最终介绍了运用PC主机、PCI-E接口芯片PEX8311、Switch芯片PEX8616和RAID磁盘阵列卡,构建一个PCI-E架构的实时海量存储体系的事例。数据经过PC机的北桥芯片,完结收集卡到磁盘阵列存储卡的数据高速传输。尽管在收集卡选用PCI-E X1的情况下并不能彻底体现将整个体系都会集在主机北桥的优势,可是它将会在更进一步的规划和研讨中体现出来。