在NI LabVIEW中进行图形化编程的优势
程工具的调试功能。这些功能,作为面向程序框图的工具栏组件,包括:探针、断点、单步步过(Step Over)/单步进入(Step Into)/单步步出(Step Out)。
图4. 程序框图工具栏可访问标准调试工具(如:步进)。
搭配G调试工具,用户无需复杂编程,就能同时检测程序中很多部分的数据探针,并且能够轻松的暂停或者进入到子程序当中。尽管这在其他编程语言中也是可能的,可视化显示程序的状态和代码并行部分间的关系(鉴于G的图形化特性,这不稀奇)却显得更容易。
图5. LabVIEW中的探针能够有效查看数值沿连线在整个应用中运行的情况,即便在代码的并行部分亦如此。
图6. 在探针监测窗口中查看探针数值;探针监测窗口能够显示整个应用程序(包括子程序)中各类探针对应的探针数值。
LabVIEW中一项最常用的调试功能就是常开型编译器。当您开发程序时,编译器不断检查错误并提供关于应用的语义和语法反馈。如果有误,您就无法运行程序——您只会发现工具栏中"运行"按钮是断开的。
图7. 断开的"运行(Run)"箭头可提供即时反馈,指明G代码中的语法错误。
按动断开的"运行"(Run)按钮,就开启了一列您必须解决的问题。一旦您解决了这些问题,LabVIEW编译器就能将您的程序编译为机器码。一经编译,G程序就能与传统且基于文本的语言(如:C)获得可比拟的性能。
图8. 错误列表详细解释了整体代码层次中的各类语法错误。
自动并行机制与性能
数据流语言(如:LabVIEW),实现了自动平行化。相对于顺序语言(如:C和C++),图形化程序内含代码中哪些部分应当并行执行的信息。例如,常用的G设计模型是生产者/消费者设计模式,其中2个独立的While循环独立运行:第一个循环负责生成数据;第二个循环负责处理数据。尽管并行执行(可能会按不同速度),数据在使用队列的2个循环之间传送;队列是通用编程语言中的标准数据结构。
图9. LabVIEW生产者/消费者设计模式往往被用来提高须并行执行任务的应用程序的性能。
并行机制在计算机程序中意义重大,因为由于进来计算机处理器设计的变化,它能解除纯顺序执行程序的性能限制。40多年来,计算机芯片制造商通过加快处理器的时钟速度来提高芯片性能。如今,为提高性能而加快时钟速度却因能耗与热耗限制,不再可行。最终,芯片供应商转而使用在单芯片上结合多个处理器内核的新型芯片架构。
要利用多核处理器中的性能,您必须能够在应用程序中使用多线程(即,把应用程序分解成可接受独立执行的离散部分)。如果使用传统且基于文本的语言,您必须直接创建并管理线程以实现并行——这项非专业程序员面临的主要挑战。
相反,G代码并行执行的本质令多任务和多线程易于执行。内置编译器在后台连续工作,以识别代码的并行部分。一旦G代码出现一个连线分支或是具有程序框图上节点的并行序列,编译器就试图在LabVIEW自动管理的一组线程中并行运行代码。在计算机科学术语里,这被称作"内隐的并行性",因为用户无需为了并行运行代码专门编写代码;G语言自行确保并行性。
除了多核系统上的多线程,G还能够将图形化编程扩展至现场可编程门阵列(FPGA),以实现更强大的并行执行。FPGA是大规模并行且可重新编程的硅芯片——各自独立的处理任务被分配至芯片的特定部分——但它们不受当前处理器内核数的限制。因此,加入更多处理时,一部份的应用性能不受负面影响。
之前,惟有接受专门训练且深入理解数字硬件设计语言的专家,才负责FPGA编程。逐渐地,不具备FPGA专长的工程师希望使用基于FPGA的自定义硬件来实现:独特的定时和触发例行程序、超高速控制、数字协议连接、数字信号处理(DSP)、射频与通信以及其他许多对高速硬件可靠性、定制和高度确定性提出要求的应用程序。G尤其适合FPGA编程,因为它不但能明确地表示并行和数据流,而且迅速成为开发人员实现并行处理与确定性执行时的一款流行工具。
图10. 结合并行性的LabVIEW FPGA代码成为FPGA硅芯片上真正独立的通道。
低层任务的抽象
正如FORTRAN所展现的,抽象是更高级编程语言的一项主要优势;它比起较低层级的语言能够更直观地诠释程序。G自行解决了许多您通常在文本编程语言(好比内存使用)中必须应对的挑战。文本语言中,一旦不再需要内存,您便负责在使用和释放内存前予以分配。同时,您还必须记得:所写入数据不得超过已分配的内存容量。因此,对于使用文本编程语言的用户来说,最大问题之一是无法分配内存或分配足够的内存。内存分配不足也是很难调试的问题。
自动内存处理是用G编程的一项主
- 基于NI PXI平台的模块化电子战模拟系统(09-25)
- WLAN测试的5要素及提升测试速度的方法(03-10)
- 了解RF仪器规格:第一部(07-24)
- 选用示波器所需考虑的10大要素(07-24)
- EDA环境结合测量软件 大幅缩短电子产品开发周期(12-12)
- 如何使用USRP-2921监测宽带频谱(09-23)