James Truchard博士,是美国国家仪器公司总裁,CEO兼创始人。他将和我们一起讨论多核处理的优势,以及国家仪器LabVIEW图形化系统设计软件如何在下一代处理器的发展中发挥优势。
问题:多核体系如何增强系统执行性能?
Truchard博士回答:历史地看,随着处理器速度的加快,对于应用来说,基于其上的应用自然会因为新处理器的一些优点运行地更快。高速的时钟频率仅仅意味着在特殊的应用中高速的指令执行速度。然而,现在情况有所转变,处理器正朝着多核体系发展,执行性能的增强表现在了在相同的时间内完成更多的任务而不仅仅是时钟频率了。现在,程序员需要决定如何在他们的系统中通过处理器芯片的可用性来扩展系统的应用功能。多核处理器的概念已经提出来很长一段时间了,因此这个问题并不新。与过去不同的地方在于多处理器或多核处理器是提高个人计算机精确程度的主要方式。多核处理的问题已经被摆上桌面,所以程序员如果想要充分发挥这项新技术的话就必须学习一些新的诀窍。
问题:什么样的技术应用可以从多核系统中获益呢?
Truchard博士回答:你可以应用多核计算机上的并行处理体系来解决任何并行化的工程应用问题。一个好的例子就是数据流应用。数据流应用就是任何一项需要获得,处理或保存大量高速数据的应用。比如说,通信协议设计,测试或音频/视频处理等。它们都可以从多核技术中获益。当系统需要获得并分析一串数据时,多次数据处理会形成一个瓶颈。将这种应用程序在多核系统中分散为两个并行循环(获取数据和分析数据),这样的话你就会得到更快的数据吞吐量。这就是所谓的流水线操作。将工作量分散到不同的处理器上,采用并行处理的方式,你就可以得到比顺序处理更加快速的获取以及处理数据的速度。
另一个例子是大量的数据场分析。在需要对大量的数据集进行分析的任何应用中,比如说,图像处理或矩阵操作,你可以通过处理器将任务分散开来。并不是像前面描述的那样对算法进行流水线操作,而是将数据分散为四个相等的部分,采用并行处理的方式对这些原始资料器的子资料执行相同分析算法的处理。
最后,限时系统能够从多核处理中获得很多利益。在一些应用中,比如说,高速控制系统,你需要从其它不太重要的通讯或文件输入输出代码中区分出来限时代码。利用多核系统,你可以在一个处理芯核上将时限部分从其它应用代码中隔离出来,以达到更好的可靠性和执行性能。
问题:工程师和科学家如何利用这种新的多核体系的优势呢?
Truchard博士回答:总的来说,多核系统对软件开发团体提出了一种新的编程挑战。程序员需要学习如何将他们的应用分散成并行部分,或线程,这样他们就可以通过多核处理芯片协调系统中的应用。多线程的编程方式对于很有经验的程序员来说也是一项非常难于挑战的任务。工程师和科学家如果需要建立基于PC的测量和控制系统就必须能够充分发挥最新的计算机技术的优势,但是,他们常常不知道如何掌握这些复杂的多线程编程。LabVIEW的框图式编程方法就是专门为工程师和科学家们设计而成的。通过利用框图对解决方案进行设计,他们可以顺其自然的开发出并行程序。LabVIEW的编译器会自动地为用户们将这些并行程序分解为多线程任务,并且通过这些线程将操作系统分配给多核处理器。这样,工程师和科学家们就可以将他们的注意力集中在解决问题上面,既不会陷入多线程编程的泥沼中,又可以利用最新的计算机技术的优势获得很好的执行性能。
问题:当我将应用程序转移到多核系统中后,程序的执行性能是否就能够有明显的改善?
Truchard博士回答:我们并不能保证你的应用程序转移到多核系统中后运行速度就能明显的加快。这全都依赖于你的程序是如何并行运行的。举例说就是,如果你将你的应用程序用一种传统的,基于文本的语言,如C或Basic语言进行编程的话,你很可能并没有将程序分解为并行的线程。因此,如果你的程序是利用单线程进行连续方式运行的话,则操作系统很难通过多核处理芯片将这些工作量合理分配,也就是说你的程序也许不能在一台具有多核处理器的计算机上快速运行。利用LabVIEW,你可以在图表中很自然的建立并行解决方案。此外,LabVIEW用户在他们进行程序开发的时候能够很自然的利用了这种并行思想的优势,甚至不用他们考虑如何利用。因此,大部分LabVIEW用户能够看到将应用程序转移到多核计算机上以后,应用程序执行性能的改善。
问题:当我将应用程序转移到多核系统后,程序的性能会得到多大的改善?
Truchard博士回答:这个问题很难回答。明显的,理论上将应用程序从单核转移到双核计算机后,性能改善为两倍,或百分之百的性能。但是,由于在线程之间进行交换这样简单的处理,使理论上的这个改善倍数很难实现。对于一些很基础的LabVIEW的应用程序来说,不进行任何代码的修改将应用程序从单核双核机器转移时,性能的改善能够达到25﹪到35﹪,这样的转移只是依赖于LabVIEW提供的内置的,自动的多线程任务。甚至于在你的LabVIEW框图中即使不采用并行处理,但是由于LabVIEW的编译器会自动地将你的应用程序分散到两个线程,这两个线程中,其中一个是用来增强用户界面的处理器,另一个则是为了处理程序代码的,因此我们仍然可以得到性能的部分改善。
利用之前我们提到过的并行编程技术,当我们将比较简单的算法转移到多核系统中用LabVIEW执行时,我们会发现性能的改善一般会在60﹪到70﹪之间。再次强调,将你的应用程序分散到并行的线程中的能力是获得更好的执行性能的关键所在。利用LabIVEW来完成这个任务远比运用那些传统的编程语言来完成复杂的多线程编程要直观很多。
问题:多核系统的影响会超过桌面PC吗?
Truchard博士回答:这是当然的。许多实时操作系统和嵌入式操作系统的卖家们正在接受着多核系统发展所带来的挑战。在桌面系统中,Windows会自动地将各线程映射到可利用的处理核心上。将这种功能加入到操作系统中是一项既复杂又困难的任务。在嵌入式系统空间中,应用程序还需要以一种确定的方式进行执行,这是一个更大的挑战。在最新的LabVIEW版本LabVIEW8.5中,我们已经设计了将线程时序自动的从桌面上导入LabVIEW实时操作系统中。现在,实时系统的开发者们可以简单的利用LabVIEW并行处理的方式对他们的应用程序进行开发,而LabVIEW实时操作系统会自动地将工作量在多个处理器上进行安排或协调。另外,为了得到更好的可调性及可靠性的话,开发者们可以用人工的方式将应用程序中特定的部分分配给特定的处理器来完成。这样做的话,我们可以将程序代码中的时限部分隔离到一个单独的处理器中进行处理。
概念上讲,在进行多核系统的编程中用到的LabVIEW中的直观的数据流动方式同样可以应用到FPGA的开发中来。因为,FPGA就是大规模的现场可编程逻辑门阵列,而这些逻辑门阵列可以利用编程写入许多并行的硬件通道,因此,像LabVIEW这样本身就是一种并行框图语言可以为FPGA的设计提供很直观的方法。利用LabVIEW中的FPGA模块,程序员们可以自动地将他们的并行处理直接映射到FPGA中,然后再利用冗长的传统的HDL语言来进行并行处理的执行。
实际上,在LabVIEW8.5中,我们增加了新的多通道滤波器和PID控制算法,这样就可以最大限度的利用FPGA的资源来进行工业机器控制的应用开发了。利用这些多通道算法,我们增加了PID通道的数量,这样就可以使具有1M个逻辑门的FPGA处理8到256个通道。此外,在LabVIEW8.5中,PID算法的执行速度提高了3倍,或者是大于30kHz的256个PID通道。
很明显,要充分发挥桌面系统中多核处理器的性能,并行编程的概念就变得非常重要。这个概念同样有助于在实时操作系统和FPGA上对嵌入式系统进行优化。
问题:LabVIEW是一种编程语言还是一个测量工具呢?
Truchard博士回答:这是一个很多潜在的用户对我们提出的比较有意思的问题。实际上,LabVIEW本身既不是一种编程语言也不是一个测量工具。LabVIEW是一个连结高级开发理念和不同硬件平台的图形系统开发平台。利用LabVIEW,你可以利用多样的编程手段—状态图,动态系统建模工具,文本数学等来快速的开发一种算法,并且利用实际的输入输出端口运行这些算法,从而快速的利用这些操作原型来建立实际的测量或控制系统。这个平台的核心技术就是图形化编程语言。利用这种基于数据流结构的语言,你可以将你的算法直接映射到硬件中,从而得到一种从设计到原型再到配置的全新体验。随着多核技术逐渐融入主流技术中,升级编程语言将是适应这种新技术的关键所在。现在,LabVIEW不需要强迫你认识整个新的编程系统或概念,就可以使你充分体会到多核处理器的强大力量。随着处理器体系逐渐向多核方向发展,我们坚信LabVIEW平台能够一如既往的满足您的需求。
相关术语
数据场(data sets)
不同于传统的用面结构表达几何形体的图形学,体素图形学用分布于空间的点的集合(称为数据场)来表达几何形体.因此,体素图形学具有方便表达复杂几何形体、方便几何形体间交、并、补的操作等优点。
数据流(data streaming)
数据流是数据在稳定的高速传输,这种速率足以支持类似高清电视(HDTV)或者在一台计算机内连续地将备份拷贝到工作流的存储媒介中这类的应用程序。数据流需要足够的带宽,实时的人类对数据的感知,确保足够的数据能够流畅地接受而没有明显的时间滞后的能力。


