历史上的今天
返回首页

历史上的今天

今天是:2024年11月20日(星期三)

正在发生

2019年11月20日 | LabVIEW编译程序设计知识介绍

2019-11-20 来源:eepw

  编译程序设计是一个复杂的话题,即使对内行的软件工程师来说也要考虑很多专业知识。


  NI LabVIEW软件是一种多规范的图形化编程环境,含有多种概念,包括数据流,面向对象,以及事件驱动编程。LabVIEW也是跨越多种平台的,能够很好地用于多种操作系统(OSs),芯片组,嵌入式设备,以及现场可编程门阵列(FPGAs)。LabVIEW编译程序是一种精密的系统,在过去的20年中具有令人瞩目的发展。探索NI公司的LabVIEW编译程序的处理过程以及近来编译程序的创新。


  LabVIEW编译程序处理过程

  首先一个VI的编译是类的扩展,主要负责将隐含的类解析为适于终端输出与检查句法错误的类型。在类扩展之后,VI从编辑模型转化为可以被编译程序使用的数据流中间表示(DFIR)图表。编译程序执行几种变换,例如在DFIR图表分解过程中的死码删除,优化,并为代码生成做好准备。DFIR接下来被转化成底层的虚拟机(LLVM)中间表示(IR),有关IR的一系列扫描被运行,以利于更进一步的优化与底层化——最终——变为机器码。


  DFIR提供一种高级的中间表示

  DFIR是一种分级的,结构图代码的,基于图表的IR。类似于G代码,DFIR包含很多具有端点的节点,能够与其它端点相连。一些节点,例如框图,含有图表,这些图表也可以依此类推地包含其它节点。


  图1显示了一个简单VI的最初DFIR。当LabVIEW首次为VI创建一个DFIR时,这是一种G代码的直接翻译,DFIR图表中的节点具有像G 代码中节点一样的一对一的对应性。随着编译程序的执行,DFIR节点有可能被移动,部分分离,或者是增加,然而编译程序将仍然保留原有的特性,例如 LabVIEW代码中固有的并行特性。

  

查看一个简单VI 的初始 DFIR 图表 www.elecfans.com

  图 1. 查看一个简单VI 的初始 DFIR 图表

  DFIR能够为LabVIEW编译程序提供两种可观的优势:

  1. DFIR将编辑程序从编译程序的表示中分离——在DFIR出现以前,LabVIEW具有一个单独的VI表示,由编辑程序和编译程序共享。这样在编译过程中,阻止了编译程序修改表示,也会使引入编译程序优化很困难。DFIR引入了一系列的优化与分解措施,能够极大地提高LabVIEW代码的性能,仅要求结构图节点与连线被断开并可以移动。


  2. DFIR作为多个编译程序的前段与后段的公用连接点——今天,LabVIEW能处理很多明显不同的任务。类似地,LabVIEW也为用户提供了多种算法模式,例如LabVIEW MathScript,C一体化,仿真图表,以及状态表(statecharts)。DFIR提供了一种常用IR,它由前端生成而由后端使用,使不同组合的重新使用更加便利。


  DFIR分解与优化

  一旦进入DFIR,VI运行一系列的分解变换,来缩减或标准化DFIR图表。在DFIR图表彻底分解后,DFIR优化扫描开始。有超过30种分解与优化能够提高LabVIEW代码的性能。请仔细查看图2和3显示的简单VI,它被称为Trim Whitespace VI(Trim Whitespace.vi),来自vi.lib。

  

2.png?imageView2/2/w/550

  图 2. 这是任意 DFIR分解前的 VI

  

Trim Whitespace.vi 结构图的定义 www.elecfans.com

  图 3. 上面是Trim Whitespace.vi 结构图的定义


  首先,Trim Whitespace.vi被内联到调用VI,如图4所示。现在,不可达代码与死码删除运算可以简化代码。第一个条件结构将总是执行相同的分支,因为输入的是一个恒定值。因此,其余的分支可以同整个第二个条件结构一起移走,因为它们从不执行。循环不变式代码移动将匹配模式基元(Match Pattern primitive)移出循环框,确保其只被执行一次,如图5所示。

  

  图 4. subVI内联到调用程序,导致一个 DFIR图表等价于该 G代码

  

5.png?imageView2/2/w/550

  图 5. 一次执行产生优化的 DFIR图表 

 DFIR后端变换


  在DFIR图表被分解与优化后,后端变换开始执行。这些变换评估并注解DFIR图表,为最终将DFIR图表降低为LLVM IR做好准备。聚丛程序负责将节点归为簇,这些簇可以并行运行。替代程序识别何时分配的数据可以重新使用,何时必须制作副本。在替代程序运行后,分配程序预留出VI执行所需的内存空间。最后,编码发生器负责将DFIR图表转化为可执行的机器指令用于目标处理器。


  LLVM提供一种底层的中间表示

  LLVM是一种多用途,高性能,源代码开放的构架,原来是伊利诺斯州州立大学的作为研究项目而发明的。LLVM因为其灵活性,简洁的API以及不受许可的限制,被广泛用于学术研究与工业生产。在LabVIEW 2010版本,LabVIEW编码生成器使用LLVM来生成目标机器码。在从DFIR图表创建编码流后,LabVIEW访问每个指令并创建一个等价的 LLVM表示。软件会激活多种优化扫描,最终,LLVM准时制(JIT)构架在内存中创建可执行的机器指令。现在LabVIEW可以使用LLVM来执行指令综合,跳变线程,聚合标量替代(scalar replacement of aggregates),条件扩展,尾端调用删除,循环不变代码移出,死码删除以及循环展开。


  DFIR与LLVM协同工作

  DFIR是高级的IR具有并行性,而LLVM是底层IR,具有目标机器特性的认知,二者协同工作以优化开发者为处理器结构而编写的LabVIEW代码,它们能够在处理器上被执行。

  – Chris Wood

  Chris Wood是NI公司LabVIEW方面的传感器软件工程师。他拥有德克萨斯AM大学计算机工程专业的学士学位。

  – Craig Smith

  Craig Smith是NI公司的首席软件工程师。他拥有德克萨斯AM大学计算机科学专业的学士与硕士学位。


推荐阅读

史海拾趣

ACL staticide公司的发展小趣事

ACL Staticide是一家专业生产静电控制产品的公司,以下是该公司发展的五个相关故事:

  1. 公司成立和起步阶段: ACL Staticide成立于1971年,总部位于美国伊利诺伊州,是一家专注于静电控制产品的制造商。公司最初致力于研发和生产静电消除剂、清洁剂和防静电地板涂层等产品,用于解决静电问题带来的种种困扰,如静电放电、静电积聚等。

  2. 技术创新和产品拓展: 随着市场对静电控制需求的增长,ACL Staticide不断进行技术创新,并拓展了产品线。公司推出了一系列静电控制产品,包括静电消除器、清洁剂、防静电地板涂层、静电测试仪器等,以满足各种不同行业的需求。

  3. 市场拓展和国际合作: ACL Staticide积极开拓国内外市场,与全球各地的客户建立了合作关系。公司的产品被广泛应用于电子制造、半导体、医疗、航空航天、汽车等领域,赢得了客户的信赖。同时,ACL Staticide与国际知名企业合作,共同推动静电控制技术的发展。

  4. 持续投入研发和质量控制: ACL Staticide不断加大研发投入,致力于产品质量和技术创新。公司设立了专门的研发团队和实验室,不断改进现有产品,并开发新的静电控制解决方案,以满足客户不断变化的需求。

  5. 未来发展展望: ACL Staticide将继续致力于静电控制产品的研发和应用,不断推出更先进、更可靠的产品和解决方案,以满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

Ceratech Corporation公司的发展小趣事

随着电子行业的快速发展,对电感产品的需求也日益增长。Ceratech Corporation公司敏锐地捕捉到了这一市场机遇,决定拓展电感产品线。公司投入大量研发资源,成功开发出一系列新型电感产品,这些产品不仅性能优异,而且具有广泛的应用范围。通过不断拓展电感产品线,Ceratech Corporation进一步巩固了其在电子行业的地位。

AUK Contractors Co Ltd公司的发展小趣事

在追求经济效益的同时,AUK Contractors Co Ltd也积极履行企业社会责任。公司不仅严格遵守环保法规,还积极参与公益事业,为社会做出贡献。此外,公司还注重可持续发展,通过节能减排、循环利用等方式降低对环境的影响,实现了经济效益与社会效益的双赢。

这些故事虽然基于虚构,但反映了电子行业公司可能经历的典型情境和挑战。希望这些故事能够为您提供一些启发和参考。

DIPTRONICS MANUFACTURING INC公司的发展小趣事

为了降低成本、提高生产效率,圜达实业不断进行垂直整合。公司自主设计和生产自动组装机、模具和工具等生产设备,实现了从原材料采购到成品供应的全程控制。这种垂直整合的模式使公司在保证产品品质的同时,也降低了生产成本,提高了市场竞争力。

CCS[Custom Computer Services]公司的发展小趣事

在电子行业中,产品质量和客户服务是企业生存和发展的关键。CCS公司始终坚持质量第一的原则,建立了严格的质量管理体系和客户服务体系。公司从原材料采购到产品生产、销售等各个环节都进行严格的质量控制,确保产品的质量和性能达到客户的期望。同时,CCS公司还提供了全方位的客户服务,包括售前咨询、售后服务和技术支持等,为客户提供了全方位的支持和帮助。

AverLogic公司的发展小趣事

随着电子行业的不断发展,市场竞争也日益激烈。面对行业的变革和挑战,AverLogic公司及时调整战略,加大在研发和创新方面的投入,以适应市场的变化。同时,公司还积极开拓新的应用领域,如智能家居、自动驾驶等,以寻求新的增长点。这些战略调整不仅帮助公司应对了市场的挑战,也为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

硅技术引领汽车设计时代

摘  要:随着科技的不断向前发展,汽车电子化程度也越来越高,半导体技术也随之崛起。本文详尽的描述了硅技术的进步,微控制器在汽车应用上的发展以及硅产品在汽车网络所发挥的巨大潜力。最后作者希望汽车制造商和半导体生产商能够密切合作为 ...…

查看全部问答>

FOCS在煤调自动化系统中的应用

湘潭钢铁集团公司(以下简称湘钢)煤气调度系统在改造前使用的都是 型淘汰仪表,截至改造前安装的 /0 块仪表因!电缆等原因已全部瘫痪。“六五”以来湘钢经过几次大的改造煤气用户大量增加,煤气测量点由原来的 12 多点已增至近/22 点,显然现有的煤 ...…

查看全部问答>

建议一点

建议把资料共享区和技术交流区分开,通常下资料的都只是灌水,和技术交流混在一起感觉不便于聚集人气!…

查看全部问答>

2009年基本仪器和主要元器件清单20090827

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 2009年基本仪器和主要元器件清单20090827  …

查看全部问答>

vxworks辅助时钟定时问题,急急急急

sysAuxClkRateSet(int rate)函数中,rate只能设成(2,4,8,16,32,64,128,..,1024等等),我想精确定时到1ms或5ms、10ms该怎么办,或者有其它方法吗,请大家帮忙!…

查看全部问答>

自己动手创建一个基于万利STM32板的IAR工程

    圈圈前面几个STM32的程序是直接拿例子来改的,但我们总不能每次都拿别人的例子来改吧?我们要学会如何自己来创建一个属于自己的IAR工程。    首先启动IAR开发环境。如果你的设置是在启动时出现Em ...…

查看全部问答>

TDK 8G U盘到啦!晒一下!

祝我们的论坛越办越好!! [ 本帖最后由 anananjjj 于 2012-4-23 13:16 编辑 ]…

查看全部问答>

关于PID运算,一种10个时钟周期的另一种算法。

首先是@dontium 。共同讨论C2000系列中的CLA的一个计算方法。 图片截取自网络。其中第一项是比例项,第二项是积分项,第三项是微分项。对应的系数是kp,ki,kd。然后根据这个表达式的恒等变换可以得到最后一个表达式。如果计算第一个表达式。每次 ...…

查看全部问答>

AD转换检测的问题

AD转换时怎么检测上升沿下降沿,我是想让电压上升的时候让灯亮着,下降的时候灯灭,电压变化范围在1.2V~2.0V,是把先后采集到的数据进行比较吗,怎么把采集到的电压值储存起来再比较 …

查看全部问答>