虚拟仪器技术的进展及如何提升并行处理能力
日新月异的科技发展与日趋激烈的市场竞争给工程师们带来了持续的压力和挑战。其中一个挑战就是协议的多样化,比如在通讯行业中,比起十年前,目前的通讯协议几乎数不清(见图1),而且没有一个明显的主导协议,因此*终产品就需要同时实现多个协议。
产品功能的日趋集成化也是挑战之一,拿新上市的iPhone为例(见图2),它汇聚了多种功能,不仅用来通话,也可以用作MP3、PDA、数字相机等等,并且为了保持市场的竞争力,新的功能会被不断地加入。
图1:通讯行业并存着多样的协议
图2:产品功能日趋集成化显然,如果要跟上这样的发展,实现产品的覆盖测试,功能固定的传统测试方法已无法满足灵活性的要求;传统方式是一套测试仪器针对一个协议,不同功能采用不同的仪器,这在今天是根本无法接受的。
基于这些挑战,测试仪器也正在经历一个基本原则的变更——从功能固定的分立仪器向着灵活的基于软件的模块化仪器架构转变,这正是NI在20多年前提出的“虚拟仪器技术”的概念。利用虚拟仪器技术的特性,可以有效地解决上述的挑战:基于软件的自定义功能使得工程师们可以针对不同的协议开发对应的测试��序;而模块化的仪器架构则可以根据不同的功能测试选用不同的模块硬件,在同一个测试平台上灵活地实现测试系统的集成。
虚拟仪器技术目前已经被应用在测试测量和自动化的各大领域,协助越来越多的工程师来创建高性能、高扩展性的测试系统。与此同时,虚拟仪器技术本身也在不断发展和**,纵观其20多年来的发展历程,可以看到,由于虚拟仪器技术是建立在商用技术的基础之上,因此它能够将新兴发展的科学技术都融合进来,使工程师能以*迅速和便捷的方式来享用,从而创建更高性能的测试系统。PC处理器技术的发展就是一个很好的例子:在1990年,用当时的PC(Intel 386/16)处理65000个点的FFT需要1100秒时间,而现在使用3.4GHz的P4计算机实现相同的FFT只需要约0.8秒。
这些蓬勃发展着的新兴技术也是动虚拟仪器技术发展的新动力,例如PCIExpress总线技术可以让更多的原始数据以更高的速度传送给PC;而多核技术则可以实现真正的并行运算,从而直线提升系统的数据处理性能;可编程逻辑门阵列(FPGA)技术则允许工程师根据不同的测试要求通过软件重新定制硬件的功能。因此,可以预见的是,这些主流的商用技术将让虚拟仪器技术向许多之前只能用昂贵的专用设备的应用领域敞开了大门。另外,纵观目前主流的商用技术,可以很明显地看到,其发展的趋势是通过并行拓扑结构来实现更高的性能。下面是几种新兴技术实例:
PCI Express总线技术
传统仪器由于将数据处理和分析的过程放在了仪器硬件内部,因此它只能返回一个结果值,这种方式虽然方便,但是却无法满足之前已经叙述过的灵活性的要求。因此,一个更好的测试方式就是直接得到原始数据,再使用专业的分析工具来分析数据,这种方式可以允许工程师们对原始数据进行多次的分析,从而不再需要做多次测试来获得不同的分析结果,节省了时间和成本。
然而,随着采样率的不断提高和通道数的增多,现有的总线带宽能否进行原始数据的实时读取,这是实现很多新兴测试应用之前就需要解决的问题。
现有的PCI总线的数据传达吞吐率可以高达132兆/秒,这个相比其他总线已经属于相当高了,并且还具有*低的延时(图3)。然而它是一个共享资源的总线,也就是说,当多个设备同时在总线上传输数据时,每个设备可享受的带宽会成比例地降低。随着I/O速度和应用要求的提高,这样的架构成为了瓶颈。而新一代的PCIExpress技术,它运用了点对点总线的拓扑架构,使每个仪器可以通过独立的通道向处理器传输数据,明显地改善了传输数据的带宽,对内存的需求*少,并加快了数据流的传输(图4)。
图3:总线带宽与延时比较
图4:PCI与PCI Express总线对比众所周知,在通信背板上添加的PCI总线是推动PXI得到快速应用的一个关键因素。现在,随着商用的PC技术从PCI总线发展到PCIExpress,PXI也已经将PCI Express结合到PXI标准中,即PXI Express(图5)。PXIExpress不仅保留了PXI的定时和同步等特性,还加入了很多新的同步特性,甚至还提供了微分系统时钟,微分信号以及微分星触发等。
图5:PXI Express机箱重要的是,PXIExpress标准还提供了向后的软件兼容性,这样工程师们就可以充分利用他们在已有软件系统中所开发的成果。此外,NI提供的PXIExpress混合插槽可以同时支持PXI和PXI Express两种总线形式的模块,从而更好地保留了过去的投资。
总言之,PCIExpress技术的诞生使得虚拟仪器技术可以实现对于数据吞吐率有高要求的应用,例如汽车碰撞测试的高速图像采集或高速数字I/O应用等等。
图6:处理器速度的发展趋势多核处理器技术
PCIExpress技术提高了总线带宽和数据吞吐率,使得工程师可以获得原始数据,并通过专业的分析工具拿到可靠的测试结果。不过近年的数据量快速增长,导致对这些数据进行处理和分析成为摆在工程师们面前的又一个问题。
多核处理器技术能够提高传统的测试算法的运行速度,Intel已经许诺了在2011年会推出80个芯核的CPU。但是不同于以往的单核,为了实现性能的提高,开发人员需要在应用软件里配置线程。从图7中可以看到,即使是在四核的处理器上,如果其应用只是单线程的话,操作系统仍旧会将所有的任务分配到其中的一个核上运行。可见,为了实现在多核处理器上程序性能的提升,就必须将你的应用程序分成多个线程,再由OS协调分配在不同的核上运行,这样才能*大限度的利用多核处理器并行的优势来提升性能。
图7:使用多线程编程才能*大限度地利用多核处理器的性能然而,这对于许多习惯于开发单线程应用的开发人来说都是一个极大的挑战。如果工程师使用的是基于文本的编程语言,如C语言,那么在进行多线程应用软件的编写时,需要专门的语义创建和管理线程,并且在线程**方式下进行数据的传送。
而NILabVIEW,就非常适合于创建并行的多线程应用。首先,相比文本编程语言的至上而下的顺序结构,LabVIEW本身就是一种并行的编程结构;其次,早在LabVIEW5.0时LabVIEW就已经支持多线程,在LabVIEW程序编写完毕后,LabVIEW编译器可以自动地识别线程并创建线程到不同的任务和循环上,再由OS分配到不同的核上运行(图8)。而*新的LabVIEW8.5更针对多核技术进行了**的支持;此外,在实时操作系统中,用户还可以自己分配特定的线程在特定的核上运行,如图9所示。
图8:使用LabVIEW方便实现多线程编程
图9:LabVIEW 8.5允许用户手动分配线程在指定的核上运行而且,随着更多的核的运用,LabVIEW可以自动创建更多的线程来自动提升程序的性能。简单来说,就是当你把测试系统的控制器升级为更多核的处理器时,不需要对程序做任何修改,测试系统就能自动达到更高的处理性能。
因此说,多核处理器使用了并行拓扑架构可以提高处理能力,但利用真正的多线程编程语言,如LabVIEW,才可以轻松实现运算性能的真正提高。
FPGA技术
虚拟仪器技术*初的一个重要特性就是可以使用软件来定制硬件的功能。随着LabVIEW作为并行化的编程语言的地位逐渐稳固,它的应用也得到了不断的扩展,并对强大的并行硬件技术FPGA提供了强有力的支持。
通常来说,FPGA的软件开发平台是使用VHDL语言来实现,但是这种语言需要很长的学习时间,并且也需要深厚的硬件技术背景,因此只有少数的一些专业人员掌握。随着可编程硬件的需求日益增长,FPGA已成为一种主流的技术,这种趋势需要能够有方法降低FPGA编程的门槛,从而将FPGA技术带给更多的工程师。
LabVIEW的并行化的编程方式以及图形化的编程环境可以允许工程师们能以直观的方式来实现FPGA的逻辑功能。例如,使用LabVIEW,在FPGA中实现图10所示的逻辑功能就变得相对简单。
图10:使用LabVIEW实现FPGA逻辑功能当然,如果要搭建一个完整的测控平台,还需要有很多不同的IO模块来选择。NI提供给工程师们完整的基于FPGA的商用型平台以供选择,让工程师们能够利用这一技术实现更高性能的测试应用。
结论
目前,虚拟仪器技术已经根植于许多领域。PCIExpress总线的高带宽将虚拟仪器技术的应用范围扩展到更多新兴的应用,从而使工程师们能够在享受高通道、高采样率的好处的同时,又可根据自身需要灵活定制相关功能;利用真正的多线程编程语言,如LabVIEW,可以轻松实现多核并行运算性能的真正提高;随着LabVIEW并行化的编程语言的快速发展,工程师们可以灵活地根据待测单元、软件或者是测试需求的变化来对硬件进行重新配置,从而对FPGA提供了强有力的支持。