哑铃厂家
免费服务热线

Free service

hotline

010-00000000
哑铃厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

利用图形化平台开发多核嵌入式系统

发布时间:2020-02-03 05:25:45 阅读: 来源:哑铃厂家

多核、多线程是嵌入式设计的未来趋向

近几年来,处理器的速度遭遇到了瓶颈。在过去40年里摩尔定律表明,每隔18到24个月半导体芯片中晶体管的数量就会增加一倍,而芯片性能也随之线性增长。过去,芯片生产厂商通过增加处理器的时钟速度来提高芯片的性能,如从100MHz到200MHz,再到最近的几GHz。但是在今天,由于功耗和散热的限制,提高时钟速度来增加性能的方法是行不通的了。芯片厂商开始转向另一种全新的芯片构架,就是使单个芯片具有多个处理器器核心。使用多核处理器,程序员们可以完成比使用单核心更多的任务。

嵌入式系统不可避免的也同样会遇到在功耗和散热方面的问题,与PC设计领域的同行一样,嵌入式系统工程师也开始考虑转向多核处理器,以求获得处理能力、功耗和产品体积等方面的潜在优势。Intel嵌入式和通信集团总经理Doug Davis指出,在高端通信和医疗成像等计算密集型应用领域,嵌入式系统客户们已经纷纷要求芯片厂商提供具有更长生命周期的多核器件。Intel不久前宣称,将面向嵌入式计算市场提供四核处理器。一些数码产品厂商亦指出,他们公司转向多核是因为“需要更强的处理能力和多线程”。

对于嵌入式系统而言,多核技术可以提供更高的处理器性能、更有效的电源利用率,并且占用更小的物理空间,因而具有许多单核处理器无法具备的优势。MIPS科技公司亚太区副总裁Mark Pittman指出,在嵌入式产品的市场上,许多应用可以从多线程流水线执行当中获益,整个系统的性能,由此提高的百分比从60%到300%不等。

多核、多线程需要全新的编程方法

要想充分发挥多核以及多处理器解决方案的潜能,仅仅依靠强有力的芯片是不够的,还需要采用新的编程方法。微软公司的软件设计师Herb Sutter说过,对于那些期望最终用户简单地将计算机升级到更快的处理器,或期望立即看到软件程序性能提升的开发者而言,“免费午餐结束了”。简而言之,在相当长的一段时间里,软件性能可以轻易地得益于处理器的性能提升,但是现在情况不同了。

利用多核处理器的编程应用是一个巨大的编程挑战,这是广为接受的。比尔盖茨有这样一段话:“要想充分利用并行工作的处理器的威力,…软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”

多核处理器编程,尤其是多线程编程中存在好几个难点:首先是并行的思考方式,比如要分辨出哪些任务是可以同时执行的,这并不是一件容易的事情。

其次是线程的创建和管理。开发人员把任务划分成多个并行步骤之后,就要通过线程的方式来实现。多线程编程是相当困难的,很多传统的编程语言都需要一组新的函数或结构来创建、同步、加解锁线程,这意味着工作量的增加。

与此同时,开发人员还需要考虑并行代码段之间哪些资源是不能共享的,比如文件、内存、硬件等等,否则会导致资源的冲突和竞争,使得并行线程因等待资源而暂停。此外,如何对复杂的多线程编程进行调试,以及如何在多核的实时系统中保持确定性,都是值得考虑的问题。

通过图形化平台开发多核嵌入式系统

由于多线程编程的复杂性,很多计算机方面的专家都在进行探索,希望让编译器来帮助开发人员处理并行性问题。如果没有这种编译系统,开发人员必须自己来处理并行编程。双核处理器的多线程编程已经是相当的复杂,如果以后发展到80个核,其复杂度将令开发人员无法应付。对于学习计算机编程或软件工程的开发人员来说,或许文本编程的并行编程机制并不足以难倒他们,可是对于其他领域的专业人员,如果他们并不擅长编程,又要使用多核处理器带来的高性能,那么图形化的开发环境LabVIEW可能是他们的理想之选。

LabVIEW是一种图形化数据流式编程语言,在嵌入式系统中实现图形化,已经成为大势所趋。现在市场所需的是一种完全的图形化编程语言,提供足够的灵活性和功能,以满足更广泛应用的需求。因此,图形化系统设计的关键因素是图形化编程。

LabVIEW是一个基于数据流的图形化开发平台,它提供了直观、符合工程师思维习惯的图形化编程方式和用户界面。在LabVIEW中,用户解决工程问题就像是在设计他们所熟悉的流程图一样。现代多核处理器使得LabVIEW成为一种更合适的编程工具选择,因为它有着并行化表示和执行任务的能力。

LabVIEW本质上是一种并行结构的编程语言。基于LabVIEW的数据流特性,如果连线中存在着分支,或者是框图中有着并行序列,那么后台的LabVIEW执行器将自动地实现并行化运行。当我们在程序框图中通过连线的分岔创建另一个程序分支时,就可能产生另一个线程。如果我们创建了多个循环,那相对应的也就创建了数个新的执行线程。在LabVIEW中,多个并行循环会自动分配成多个线程并分配到多个处理核上,因而LabVIEW用户无需对代码做任何改动,也不需要花时间学习新的编程方式,即可利用多核处理器的性能优势。

LabVIEW提升多核应用程序的性能,从单核到双核计算机,理论上讲,获得的性能应该是原来的两倍。但是,与这个极限的接近程度取决于用户应用程序并行化运行的程度。LabVIEW程序员们可以很方便的以并行方式来表示他们的解决方案。在多核处理器上,我们可以方便地实现应用程序的性能改进,因为LabVIEW动态地分配每一个线程。事实上,用户不需要创建特殊的代码以支持多线程,而是通过最少的编程调整,并行应用便可以获益于多核处理器。对于普通的LabVIEW应用程序而言,如果不考虑多核编程技巧,在不改写代码的情况下,与最初的基准程序相比,可以获得25%到35%的性能提升。

{{分页}}

图1是一个简单应用程序的例子。其中,LabVIEW代码分支简化了两个分析任务,一个滤波器操作和一个快速傅立叶变换(FFT),使它们可以在双核机器上并行化执行。它首先在单核的模式下(关掉其中的一个核)运行,然后在双核的模式下运行。因为这两项任务都是计算量很高的,利用任务并行化获得的性能改进为原来的1.8倍。

图1 典型的LabVIEW应用程序,展示了数据流编程的并行特性

LabVIEW支持嵌入式实时系统,前面大部分讨论都是针对如何平衡多核、多线程编程的复杂性,从而提高程序的性能和吞吐量。对于要求更加严格的嵌入式实时系统,这些考虑同样适用。在典型的实时系统中,通常有一段代码对执行时间有严格要求,必须以指定速率持续而可靠地运行。同时也有一些对执行时间没有严格要求的代码段,比如用户界面的数据传输、数据存储等等。显然,对于执行时间有严格要求的代码或循环,应用程序必须对它们特别关照,保证没有冲突等问题。

表面上看来,这个要求对于多核系统是一件非常简单的事情。只要将对于执行时间有严格要求的代码与其他代码隔离,分配到独占的处理器核上,就可以保证它不受影响地运行。但是,许多实时或嵌入式操作系统并不支持在多个处理核之间的线程负载均衡,这是因为在实时和嵌入式领域的工具往往更关注性能和确定性,而减缓了对于多核的支持。

Intel定义了用户需要评估的软件四层次来确定多核系统的可用程度。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个处理核上进行负载均衡,那么并行化程序在多核系统上是不能够运行得更快的。

操作系统,作为软件层次的底层,许多实时的操作系统(RTOS)厂商现在还不支持在多个处理器核间进行自动的线程负载均衡。但是,从表1的表述可以看到,为了让多核处理器在嵌入式实时系统中发挥出性能优势,在实时或嵌入式操作系统中必须支持多核处理器的任务分配。

LabVIEW的最新版本将针对多核处理器的自动线程负载平衡功能引入到实时系统之中。

如果需要更进一步的控制或微调实时程序的性能,在 LabVIEW 中, 可以使用定时循环结构将各部分代码分配到指定的处理器核上。这意味着开发人员可以把执行时间有严格要求的代码直接映射到专用的处理器核,从而保证这部分代码不会被中断,保持其实时性。

结语

LabVIEW为多核处理器提供了一个理想的编程环境,其数据流编程概念能够更直接地将并行应用可视化。LabVIEW自动将并行的程序多线程化,而且它可以指派线程到指定的处理器核,也可以自动平衡线程负载,从而利用多核架构的优势以获得更好的系统性能。LabVIEW 实时模块可以在实时或嵌入式系统中支持多核处理器的任务分配,帮助开发人员从真正意义上进入嵌入式系统的多核时代。

佐佐木艾丽下载

女友介绍

佐佐木绘奈bt

最新番号资讯