![]() |
广嵌科技 广嵌教育 English | |
|
LabVIEW 8.5为开发者带来多核处理器的强大功能
来源:今日电子 作者:NI公司LabVIEW实时模块产品经理 时间:2008-01-15 发布人:卢春妙
根据摩尔定律,芯片上晶体管的数目每隔18~24个月就会翻一番。如同在过去40年里一样,这个定律现在还是正确的,但是在性能上却并不再呈现一个线性增强的现象。以前,芯片制造商通过提高处理器时钟速度使芯片性能翻番——从100MHz到200MHz,直至近来达到吉赫兹。 然而如今,因为能量消耗和热量发散的限制,通过增加时钟速度来提高性能已经不再可行。芯片制造商开始转向全新的芯片结构,即一个芯片上有多个处理器核。相对于单核,采用多核处理器的程序员们可以完成更多全局工作。然而,要充分利用多核处理器的优点,程序员们必须重新考虑他们该如何开发应用程序。有些程序员,希望在终端客户将他们的电脑简单升级到快速处理器的时候,就能立即获得软件应用程序性能的增强。按照微软的软件工程师Herb Sutter的话来说,对这些程序员“已经没有免费的午餐”。简而言之,如今程序员们应当致力于可持续的性能改进。 提高处理器时钟速度,则顺序程序的性能改进;为电脑升级一个更快速的CPU,意味着每一条独立指令的运行速度都会加快。要想使用多核系统以继续提高性能,开发者需要设计应用程序,为每个核分配工作——本质上即是开发一个并行应用程序来取代顺序应用程序。 幸运的是,NI LabVIEW软件非常适合于工程师和科学家们充分利用多核芯片的处理能力,主要原因有下面三个。 1 LabVIEW是一种图形化数据流编程语言 开发者可在LabVIEW中简便地实现并行任务,使得开发新的应用程序并更改现存的应用程序以利用多核处理器的优点成为可能。LabVIEW从5.0版本开始就是多线程的,而现在的8.5版本更引进了新的功能,以利用多核处理器的优点。 2 LabVIEW将多核性能引进嵌入式实时硬件中 LabVIEW 8.5将桌面操作系统(例如Windows和Linux)的自动多任务处理功能——也就是对称多处理技术(SMP)——引入确定性的实时系统。 3 LabVIEW处于“Multicore-Ready”软件层次的顶层 LabVIEW应用程序的每一层(例如:LabVIEW应用程序代码、低层函数、I/O驱动),都是线程安全的,它们可以利用多核处理器的优点。 LabVIEW是一种图形化数据流编程语言 使用LabVIEW开发应用程序的最主要好处就是其直观的、图形化的语言。在LabVIEW中,解决工程问题就如同在纸上画方块图一样简单。由于LabVIEW能够并行表达和执行任务,所以现代的多核处理器使得LabVIEW成为编程工具的一个更有利的选择。
从单核到双核计算机,理论上的优势是性能的双倍改进。但是,如何逼近该极限,则与你能多大程度上并行执行程序有关。LabVIEW程序员自然是并行地编写其算法。在普通LabVIEW应用程序的初始基准下,若不考虑多核编程技术,不改变代码,则其性能能够提高15%~20%。
采用传统的基于文本工具的开发者必须使用复杂的编程结构(称为线程),在这些顺序语言中实现并行化。管理这些多线程应用程序可能是一个挑战。在C语言中,你必须实现锁定、互斥体、原子突击和其他高级编程技术之间的同步。当多线程难以跟进时,就可能出现一些常见的编程缺陷如下。 ● 由于大量线程导致的程序失效。 ● 死锁——线程陷入等待状态,无法进行处理。 ● 竞态条件——代码执行时间设置错误,或者需要数据的时候无法获取,或者正确的数据被复写。 ● 存储冲突——多线程企图同时存取存储器。 在代码开发之后,另一个可以提高工作效率的例子是在LabVIEW中使用高亮显示执行步骤和探针,实行基本调试的功能,如图2所示。 在评价LabVIEW用于多核开发时,Eaton公司的首席产品工程师Scott Sirrine说“LabVIEW是一种自动多线程的数据流语言,这个事实表明了LabVIEW相对于其他编程语言的两大优点——生产力开发和执行力实现。”
下面是三个示例性的操作命令: ● 任务并行化——将程序分成并行执行任务。 ● 流水线操作——将顺序算法分成同级的步骤,分配于多个核中执行。 ● 数据并行化——将大的数据组分成多个子集,然后并行执行。 可以在ni.com/multicore上找到所有这些优化方案的例子。 LabIVEW为实时嵌入式硬件引入多核性能 一直以来,工程师们使用的工具都不能利用嵌入式多核系统的特性进行最优化的并行式编程。LabVIEW 8.5软件为确定性实时系统引入了台式机的自动多线程调度器(也被称为SMP)。LabVIEW 8.5的实时模块加入了一流的多核系统支持,它有着如下特性: ● 在嵌入式实时系统中,在多个核上自动进行负载均衡。 ● 对于时间关键(time-critical)的代码,可以将定时循环分配到指定的处理器上将定时循环结构中的关键代码与应用程序中的其他代码隔离开。 ● 利用Real-Time Execution Trace Toolkit 2.0工具,用户可以方便地对VI程序运行过程中的线程和处理器核进行图形化的表示,以便更好地调整实时系统,进而获得最佳性能。
Intel公司定义了用户需要评估的四层软件层次来确定多核系统的可用程度。这四层软件层次分别是操作系统、设备驱动、应用程序库和开发工具。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个核上进行负载均衡,那么并行化程序在多核系统上是不能够运行得更快的。 设备驱动软件层的一个例子就是NI-DAQmx驱动软件。传统的NI-DAQ是“线程安全”的,也就是说在一个NI-DAQ函数被调用时,整个程序库会阻塞其他调用的线程。从第一感觉看来,这是非常有逻辑性的,因为NI-DAQ是用来控制硬件的,而硬件通常被认为是单一的源。NI-DAQmx这款重新设计过的新型DAQ驱动程序是可重入的,这意味着多个DAQ任务可以以一种真正并行的方式运行而不再需要阻塞线程。利用这种方法,驱动程序可以使用户的应用程序在同一块电路板上并行地运行多个任务,诸如独立的模拟和数字输入/输出等。 LabVIEW——理想的并行化编程语言 大多数用户将会看到多核系统所带来的好处,它利用改进的性能同时运行多个应用程序(电子邮件、视频、文字处理等),这也被称为多任务。但是,对于试图对单一应用程序进行优化的开发者而言,它所能提供的好处是有限的。 工程师和科学家们正在为测试需要或者在控制应用中改进的闭环速率而寻找更快的测量仪器。他们需要考虑如何实现并行的应用。LabVIEW软件就是这样一种用户可以借助于它所提供的软件环境来实现并行应用的有效工具。语言的数据流特性、LabVIEW Real-Time工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层,使得LabVIEW软件成为进行并行化编程的首选。 ·上一条:离子迁移谱仪嵌入式系统的设计
|
相关信息 |
|||||||||||||||||||
| Copyright ©2005-2007 广东省嵌入式软件公共技术中心.All Rights Reserved.版权所有 复制必究 客户服务支持:020-32068395-832 24小时服务热线:13631411558 技术支持与报障:gdesc@midea.com.cn 020-32068395-807/809 粤ICP备05104135号 |