摩尔定律问世40余年来,人们业已看到半导体芯片制造工艺水平以一种令人目眩的速度在提高,Intel微处理器的最高主频甚至超过了4G。虽然主频的提升一定程度上提高了程序运行效率,但越来越多的问题也随之出现,耗电、散热都成为阻碍设计的瓶颈所在,芯片成本也相应提高。当单独依靠提高主频已不能实现性能的高效率时,双核乃至多核成为了提高性能的唯一出路。随着AMD率先打破摩尔定律、终结频率游戏后,Intel和AMD都开始逐步推出了基于双核、四核甚至八核的处理器,工程师们逐渐投入到基于多核处理器的新型应用开发中去时,大家开始发现,借助这些新的多核处理器,并在应用开发中利用并行编程技术,可以实现最佳的性能和最大的吞吐量,大大提高应用程序的运行效率。
然而,业界专家们也同时认识到,对于实际的编程应用,多核处理器的并行编程却是一个巨大的挑战。比尔盖茨是这样论述的:
“要想充分利用并行工作的处理器的威力,…软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”
比如用C++写一个多线程的程序,程序员必须要非常熟悉 C++,了解如何将C++程序分成多个线程和并在各个线程间进行任务调度,此外还要了解 Windows 多线程的机制,熟悉 Windows API 的调用方法和MFC 的架构等等。在 C++ 上调试多线程程序,更是被很多程序员视为噩梦。
所以,对于测试测量行业的工程师来说,在传统开发环境下要想获得多核下的效率提升意味着大量而复杂的多线程编程任务,而使得工程师脱离了自动化测试及其信号处理任务本身,于是,要想在当前的多核机器上充分利用其架构和并行运算的优势,反而成为工程师们“不可能”完成的任务。
LabVIEW降低并行编程的复杂性,快速开发并行构架的信号处理应用
幸运的是,NI LabVIEW图形化开发平台为我们提供了一个理想的多核处理器编程环境。作为一种并行结构的编程语言,LabVIEW能将多个并列的程序分支自动分配成多个线程并分派到各个处理核上,让一些计算量较大的数学运算或信号处理应用得以提高运行效率,并获取最佳性能。
我们以自动化测试中最常见的多通道信号处理分析为例。由于多通道中的频率分析是一项占用处理器资源较多的操作,如果能够让程序并行地将每个通道的信号处理任务分配至多个处理器核,对于提高程序执行速度来说,就显得尤为重要。而目前,从LabVIEW编程人员的角度来看,要想获得这一原本“不可能”的技术优势,唯一需要改变的只是算法结构的细微调整,而并不需要复杂且耗时耗力的代码重建工作。
以双通道采样为例,我们需要分别对高速数字化仪的两个通道上的数据进行快速傅立叶变换(FFT)。假设我们采用的高速数字化仪的两个通道均以100 MS/s采样率采集信号并实时分析。首先,我们来看LabVIEW中对于这一操作的传统顺序编程模型。
实际上,两个通道的FFT运算相互独立,如果程序能够将两个FFT自动分配到一台双核机器上的的两个CPU上,那么理论上程序的运行效率将提高一倍。在LabVIEW的图形化编程平台上,情况正是如此,我们可以通过并行化处理这两个通道来真正提高算法性能。图2表示了一种采用并行结构的LabVIEW代码,从图形化编程的角度来看,仅仅是增加了一路并行的FFT函数而已。
程序性能的进一步优化
LabVIEW并行的信号处理算法不仅帮助工程师提高程序性能,而且可以更清楚的划分多个处理器核在项目中的不同用途。比如,将控制采样输入,显示输出和信号分析的模块独立分开。
以HIL(Hareware-in-the-loop)或在线信号处理应用为例。首先,使用高速数字化仪或高速数字I/O模块来采集信号,并在软件中执行数字信号处理算法。然后,通过另一个模块化仪器生成结果。常见HIL应用包括在线数字信号处理(如滤波、插值等等)、传感器仿真和定制组件模拟等等。
一般来说,HIL可以使用两种基本的编程结构来完成,单循环结构和带有队列的流水线式多循环结构。单循环结构实现简单,对于小数据块具有较低时延,但单循环结构受限于各个环节的顺序结构而无法实现并发性,例如,由于处理器只能执行一个函数,在处理数据的同时就无法执行仪器IO,所以单循环结构无法有效利用多核CPU的优势。相比之下,多循环结构则能够更好的利用到多核处理器,从而支持高得多的吞吐量。
对于一项多循环结构的HIL应用来说,可以通过三个独立的while循环和两个队列结构,实现其间的数据传递。在此情况下,第一个循环从仪器采集数据,第二个循环专门执行信号处理分析,而第三个循环将数据写入到另一台仪器。这样的处理方式,也被称之为流水线式信号处理(pipeline)。
并行处理算法改善了多核CPU的处理器利用率。事实上,总吞吐量取决于两个因素,处理器利用率和总线传输速度。通常,CPU和数据总线在处理大数据块时工作效率最高。而且,我们可以进一步使用具有更快传输速度的PXI(PCI) Express仪器,来减小数据传输时间。
利用NI强大的并行性计算的优势以及PCIe高速数据流传输加上Intel的多核技术,在DELL的PowerEdge 2950八核处理器上,以10KHz(2.56MB/s)的速率同步采样并处理128个通道的数据,NI帮助ASDEX Tokamak——德国最先进的核聚变装置,完成了“不可能完成的任务”——为了保证Tokamak装置中等离子体的高速稳定的运转,将其装置外壁上的88个磁感应器上的大量数据转换成64*128个点格上的偏微分方程组,并同时在短短的1ms内完成了整个计算过程!
正如德国开发负责人Dr. Louis Giannone所说的:
“利用LabVIEW编程所完成的并行化应用控制,我们在8核机器上将速度提高了5倍,使得我们成功达到1ms闭环控制速率的要求!”。
关键字:LabVIEW 图形化开发平台 信号处理
引用地址:通过LabVIEW图形化开发平台有效优化多核处理器环境下信号处理性能
然而,业界专家们也同时认识到,对于实际的编程应用,多核处理器的并行编程却是一个巨大的挑战。比尔盖茨是这样论述的:
“要想充分利用并行工作的处理器的威力,…软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”
比如用C++写一个多线程的程序,程序员必须要非常熟悉 C++,了解如何将C++程序分成多个线程和并在各个线程间进行任务调度,此外还要了解 Windows 多线程的机制,熟悉 Windows API 的调用方法和MFC 的架构等等。在 C++ 上调试多线程程序,更是被很多程序员视为噩梦。
所以,对于测试测量行业的工程师来说,在传统开发环境下要想获得多核下的效率提升意味着大量而复杂的多线程编程任务,而使得工程师脱离了自动化测试及其信号处理任务本身,于是,要想在当前的多核机器上充分利用其架构和并行运算的优势,反而成为工程师们“不可能”完成的任务。
LabVIEW降低并行编程的复杂性,快速开发并行构架的信号处理应用
幸运的是,NI LabVIEW图形化开发平台为我们提供了一个理想的多核处理器编程环境。作为一种并行结构的编程语言,LabVIEW能将多个并列的程序分支自动分配成多个线程并分派到各个处理核上,让一些计算量较大的数学运算或信号处理应用得以提高运行效率,并获取最佳性能。
我们以自动化测试中最常见的多通道信号处理分析为例。由于多通道中的频率分析是一项占用处理器资源较多的操作,如果能够让程序并行地将每个通道的信号处理任务分配至多个处理器核,对于提高程序执行速度来说,就显得尤为重要。而目前,从LabVIEW编程人员的角度来看,要想获得这一原本“不可能”的技术优势,唯一需要改变的只是算法结构的细微调整,而并不需要复杂且耗时耗力的代码重建工作。
以双通道采样为例,我们需要分别对高速数字化仪的两个通道上的数据进行快速傅立叶变换(FFT)。假设我们采用的高速数字化仪的两个通道均以100 MS/s采样率采集信号并实时分析。首先,我们来看LabVIEW中对于这一操作的传统顺序编程模型。
图1. 利用顺序执行的LabVIEW代码
实际上,两个通道的FFT运算相互独立,如果程序能够将两个FFT自动分配到一台双核机器上的的两个CPU上,那么理论上程序的运行效率将提高一倍。在LabVIEW的图形化编程平台上,情况正是如此,我们可以通过并行化处理这两个通道来真正提高算法性能。图2表示了一种采用并行结构的LabVIEW代码,从图形化编程的角度来看,仅仅是增加了一路并行的FFT函数而已。
图2. 利用并行执行的LabVIEW代码
图3. 对于大于1M采样(100 Hz精度带宽)的数据块,并行方式实现了80%或更高的性能增长。[page]
程序性能的进一步优化
LabVIEW并行的信号处理算法不仅帮助工程师提高程序性能,而且可以更清楚的划分多个处理器核在项目中的不同用途。比如,将控制采样输入,显示输出和信号分析的模块独立分开。
以HIL(Hareware-in-the-loop)或在线信号处理应用为例。首先,使用高速数字化仪或高速数字I/O模块来采集信号,并在软件中执行数字信号处理算法。然后,通过另一个模块化仪器生成结果。常见HIL应用包括在线数字信号处理(如滤波、插值等等)、传感器仿真和定制组件模拟等等。
一般来说,HIL可以使用两种基本的编程结构来完成,单循环结构和带有队列的流水线式多循环结构。单循环结构实现简单,对于小数据块具有较低时延,但单循环结构受限于各个环节的顺序结构而无法实现并发性,例如,由于处理器只能执行一个函数,在处理数据的同时就无法执行仪器IO,所以单循环结构无法有效利用多核CPU的优势。相比之下,多循环结构则能够更好的利用到多核处理器,从而支持高得多的吞吐量。
对于一项多循环结构的HIL应用来说,可以通过三个独立的while循环和两个队列结构,实现其间的数据传递。在此情况下,第一个循环从仪器采集数据,第二个循环专门执行信号处理分析,而第三个循环将数据写入到另一台仪器。这样的处理方式,也被称之为流水线式信号处理(pipeline)。
图4.带有多个循环与队列结构的流水线式信号处理
并行处理算法改善了多核CPU的处理器利用率。事实上,总吞吐量取决于两个因素,处理器利用率和总线传输速度。通常,CPU和数据总线在处理大数据块时工作效率最高。而且,我们可以进一步使用具有更快传输速度的PXI(PCI) Express仪器,来减小数据传输时间。
利用NI强大的并行性计算的优势以及PCIe高速数据流传输加上Intel的多核技术,在DELL的PowerEdge 2950八核处理器上,以10KHz(2.56MB/s)的速率同步采样并处理128个通道的数据,NI帮助ASDEX Tokamak——德国最先进的核聚变装置,完成了“不可能完成的任务”——为了保证Tokamak装置中等离子体的高速稳定的运转,将其装置外壁上的88个磁感应器上的大量数据转换成64*128个点格上的偏微分方程组,并同时在短短的1ms内完成了整个计算过程!
正如德国开发负责人Dr. Louis Giannone所说的:
“利用LabVIEW编程所完成的并行化应用控制,我们在8核机器上将速度提高了5倍,使得我们成功达到1ms闭环控制速率的要求!”。
上一篇:检测电力系统中的高频瞬变
下一篇:基于NI cRIO的多通道强震动监测与报警系统开发
推荐阅读最新更新时间:2024-03-30 22:35
基于LabVIEW的多传感器空气流量测试系统设计
1 系统硬件设计 本设计将LabVIW软件、多传感器、计算机结合,构建了一个空气流量测试系统,实现对多传感器信息的融合。系统包括被测对象、传感系统、信号调理电路、数据采集与处理系统,系统框图如图1所示。 1.1 被测对象 被测对象通过改变变频器的频率控制风机发出不同大小的风量通过流量传感器,模拟进入发动机的空气流量大小。 1.2 传感系统 传感系统主要包括温度传感器、空气流量传感器、玻璃转子流量计及有关连接部分。 1.2.1 温度传感器 温度传感器选择集成电路温度传感器LM35,它具有很高的工作精度和较宽的线性工作范围,该器件输出电压与摄氏温度线
[测试测量]
PCI9656实现与CPCI总线通信的雷达信号处理板
本文在详细阐述处理板的整体结构和DSP与PCI9656的接口电路设计原理的基础上,提出一种ADSP—TS201基于桥芯片PCI9656实现与CPCI总线通信的雷达信号处理板的设计方案,实现RocketIO到DSP数据的高速传输,它克服了传统雷达信号处理板通用性差的缺点。 引 言 随着科学技术的发展,传统的雷达信号处理系统由于专用性强,兼容性差,影响了系统的通用性和其扩展能力,不能满足现代雷达实时高速的信号处理需求。该设计针对传统雷达信号处理系统通用性和扩展能力差提出一种ADSP—TS201基于PCI9656桥芯片实现与CPCI总线通信的高速、通用性强的信号处理系统,并介绍一种DSP与PCI9656的接口电路设计。
[工业控制]
基于LabVIEW的汽车雨刮器综合控制系统
本文介绍一种基于LabVIEW的汽车雨刮器综合控制系统的设计,描述了软件界面设计、参数测量及数据处理的实现方法。 挑战:解决对汽车雨刮器的功能测试(刮刷角度与刮刷频率)、耐久性能测试(刮刷150万次)以及对汽车挡风玻璃的淋水控制(包括喷水间隔与水量大小的调节)。 应用方案:使用Nationl Instruments公司的LabVIEW编程软件对数据进行采集、处理并对雨刮系统进行控制。 使用产品:Labview8.6软件开发平台;NI PCI-7831R数据采集卡 雨刮器是汽车上重要的零部件,它能确保汽车在雨天能安全行驶,其性能的好坏直接影响汽车行驶的状况。为了保证雨刮器的可靠性,雨刮器出厂试验要求必须能达到150万次的刮刷循环。
[测试测量]
基于LabVIEW开发平台的声音能量设计
引言 语音信号是人们进行沟通和交流的主要媒介。语音具有两重属性,一方面语音具有表义功能;另一方面语音毕竟是一种声音,它是由人的头脑中产生的意念通过一组神经信号去控制发音器官,变成空气的振动信号,然后由空气传递到人的耳朵或受话器中的信号。语音的基本作用是进行信息交换,构成语音通信。在语音通信系统中,语音信号的传输存储和处理的方式是各种各样的。大体上说话音处理的研究可以分为以下几个方面:语音分析、语音增强、语音编码、话音合成和语音识别与理解。单从记录声音的设备来看就有留声机、录音机到现在数字化的MP3播放器,这其中的记录技术也一直在飞速的变化中。因此,在信息社会高度发达的今天,用数字方法进行语音的传送、存储、识别、增强就显得尤为必要。
[测试测量]
LabVIEW学习笔记——第二个程序:多个整数的平方和
多个整数的平方和的程序涉及到程序的执行结构以及变量类型和数据转换。 首先是程序的执行结构:FOR循环--实现连续数据相加的必要条件。然后再通过移位寄存器实现对数据的累加。 变量的数据类型转换:为了能够显示1^2+2^2+...+N^2=...需要对结果以字符串的形式显示出来,于是需要将整数转换为十进制字符串---在 字符串控件 中的 数值/字符串 中选择 数值至十进制字符串转换 最后的显示:当然要选择 字符串显示 (在前面板中操作)
[测试测量]
e络盟开售NI LabVIEW+套件,加速测试产品上市
NI提供的软件包经济省时,不仅帮助开发人员节省时间,还为创客提供了新的机遇 中国上海,2024年2月29日—安富利旗下全球电子元器件产品与解决方案分销商e络盟宣布现货供应NI的LabVIEW+套件, 这个软件包包括LabVIEW+、TestStand、DIAdem和FlexLogger™等产品,是用于测量、分析和测试的专用工具,旨在帮助工程师更快地构建更好的自动化测试系统。 30 年来,LabVIEW一直是NI的基准软件程序,它的图形化编程能够加快开发速度,是多代工程师解决问题的首选工具。此外,它还可以连接到任何仪器,使用它来构建用户界面仅需简单的拖放操作。 LabVIEW+套件集成了NI广受赞誉的TestSt
[测试测量]
基于PXI和LabVIEW的 FCT(Functional Circuit Test)测试系统
挑战:通过PXI 控制板卡和LabVIEW软件,构建一套比较完整齐全的PCB板的功能测试(FCT)系统,利用该系统可实现对音频视频以及各种静态参数(电压、电流、频率)的综合性全自动测试,对于新开发生产的PCB板,工厂无需频繁更换测试硬件,只要添加制作一个测试夹具,重新连接线路,利用LabVIEW开发编写测试软件即可。 应用方案:使用NI公司的PXI控制硬件平台结合NI的图形化编程软件LabVIEW快速并成功的开发构建出一个经济、灵活的PCB板功能测试系统(FCT测试系统)。 该系统采用的PXI 控制板卡可以实现对音频、视频以及各种静态参数(电压、电流、频率)的综合性全自动测试,并且通过LabVIEW软件编程可以实现兼容 GPIB
[测试测量]
浅谈实时信号处理在通信中的具体应用
在当前的DSP市场上,通信设备是其最大的用户,以下是其中的几个例子: (1)数字式蜂房系统 数字式蜂房系统使用通用DSP来实现语音合成(speech synthesis)、纠错编码(error-correction coding)、基带调制解调器(baseband modem)、以及系统控制等功能。 a.语音合成、语音压缩与编码是DSP最早和最广泛的应用项目。在有线和无线通信中,矢量编码器用于将语音信号压缩到有限带宽的信道中。 b.纠错编码。前向纠错(FEC,Forward Error-Correction)方案广泛地使用在电信应用中、用以降低噪声信道中的bit误码率。随着越来越多的数据要通过有限带宽的
[嵌入式]