当前位置:首页 > 测试测量 > 测试测量
[导读]  编译程序设计是一个复杂的话题,即使对内行的软件工程师来说也要考虑很多专业知识。  NI LabVIEW软件是一种多规范的图形化编程环境,含有多种概念,包括数据流,面向对象,以及事件驱动编程。LabVIEW也是跨越多

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

  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代码中固有的并行特性。

  

 

  图 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. 这是任意 DFIR分解前的 VI

  

 

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

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

  

 

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

  

 

  图 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方面的传感器软件工程师。他拥有德克萨斯A&M大学计算机工程专业的学士学位。

  – Craig Smith

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2022年10月19日 /美通社/ -- 近日,Gartner首次发布全球边缘计算市场指南报告(《Market Guide for Edge Computing》,以下简称"市场指南"),这是20...

关键字: 边缘计算 GARTNER 节点 数据中心

腾盛博药生物科技有限公司公布了两项在美国健康志愿者中开展的评估长效BRII-732和BRII-778的1期研究最新数据,这两种在研候选药物旨在用于治疗人类免疫缺陷病毒(HIV)感染。两项研究结果均表明,BRII-732和...

关键字: FIR ST RS

上海2022年10月14日 /美通社/ -- Ansys(NASDAQ: ANSS)宣布任命马金梭先生担任中国区总经理,全面负责Ansys在中国大陆地区的业务,并领导包括销售、渠道、高校、合规以及营销、运营等在内的工作。...

关键字: ANSYS FIR NAS 中国制造

上海2022年10月11日 /美通社/ -- 10月10日,明月镜片正式官宣刘昊然成为品牌代言人。一个是中国镜片领导品牌,通过科技创新引领了镜片行业的发展;一个是新生代实力演员,凭借高票房作品赢得了观众的认可。此次双方携...

关键字: PMC 控制 节点 蓝光

瑞士第二大银行瑞士信贷(Credit Suisse)正在寻找一个外部投资者,有意让它对剥离后的投行业务持有部分股权,以提供资本,从而帮助公司聘用并留住人才,剥离后的这些业务将被打造成一家类似于精品投行的新公司。该公司有可...

关键字: ST FIR UI SE

(全球TMT2022年9月5日讯)燧原科技在2022世界人工智能大会"算尽其用·定义AI算力中心新实践"云端算力产业应用论坛上正式发布云燧智算机(CloudBlazer POD)。云燧智算机是针对大规模、集约化人工智能...

关键字: 人工智能 数据中心 节点 CPU

凝聚燧原科技两代芯片研发与多个大规模人工智能算力中心工程实践,面向大规模、集约化、绿色低碳数据中心建设,云燧智算机(CloudBlazer POD)正式发布。 上海2022年9月3日 /美通社/ -- 燧原科技在202...

关键字: 人工智能 数据中心 节点 TC

北京2022年9月2日 /美通社/ -- 近日,由CDCC中数智慧信息技术研究院主办的2022第三届中国数据中心绿色能源大会(以下简称中国数据中心绿色能源大会)在"六朝金陵,十里秦淮"的南京...

关键字: 数据中心 绿色能源 数字经济 节点

中华中医药学会中医体质分会第二十次学术年会暨国医大师学术经验传承研讨会同期召开 北京2022年9月1日 /美通社/ -- 为了满足我国中医药传承创新发展迫切需求,加快建设高层次中医药人才队伍,培育一批中医药领军人才,打...

关键字: 研讨会 节点 钟南山

北京2022年8月31日 /美通社/ -- L11级别整机柜交付模式是指机柜在工厂完成PDU及其它机柜配件装配,完成服务器上架安装及交换机上架安装(可选),并完成柜内布线等原本需要在数据中心部署现场进行的装配活动,以整机...

关键字: 数据中心 BSP 节点 交换机

测试测量

28633 篇文章

关注

发布文章

编辑精选

技术子站

关闭