0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编译器对芯片行业到底有什么意义

Wildesbeast 来源:今日头条 作者:芯动力 2020-02-20 14:22 次阅读

2019年科技行业有一个热点“华为开源方舟编译器”,编译器这个名词开始不断的进入国人的视野。作为民族自主品牌的骄傲,华为为什么投入巨大的人力开发方舟编译器并将它开源,编译器在华为乃至整个业界中到底处于什么样的地位呢?

撇开编译器,我们先谈谈芯片。提到芯片,一直是国人痛心的地方,国内的媒体一直提到芯无力。2018年中国进口总额为14.09万亿元,在这14.09万亿元的进口商品中,进口芯片的金额近2.06万亿元(具体为20584.1亿人民币),约为全国进口商品总额的14.62%;进口石油的总金额是15881.7亿人民币(约为1.59万亿元),约为全国进口商品总额的11.28%,进口芯片的金额是石油的1.3倍。在最近十年的进口数额统计中,芯片进口的价值均超过了石油,缺芯已经紧紧的扼住了中国发展的咽喉。

为什么需要编译器

以当前最主流的芯片来看,桌面端CPUIntelAMD占据,移动端被ARM、Apple统治,即使我们有新的性能相当的CPU出现了,真的就能立即替代这些霸主吗?

以日常使用的手机为例。从用户的角度来说,用户并不关注手机里面使用的是什么CPU。评价手机好用与否的第一标准是手机打开APP是否足够快、网络是否足够顺畅等,当然如果这个手机里面搭载的是中国芯就更让我们骄傲了。甚至对于部分用户,如果手机内搭载的是国产CPU,即使性能稍微差一点,优先也会选择国产CPU的手机。但是很少用户会选择一款手机:使用国产CPU、无法运行当前主流的APP(想象一下无法使用微信、支付宝、抖音的生活吧)。

当然也许有人会说可以让阿里、腾讯等这样的公司针对国产CPU进行专门的开发。但是针对特定的硬件架构进行代码开发维护、性能调试等会有巨大的开销,大公司也许可以做到,但是还有更多的小公司呢,日常生活中总会有一些APP属于比较小众的那一款,在国产CPU平台上如果无法支持,或许就会成为你放弃这个平台的理由。公众对国产CPU平台的热情被千千万万个小的APP消耗殆尽后,平台将会不可避免的走向灭亡。

这就是现在经常说的芯片的生态系统的可怕之处。硬件不再是以单打独斗的形式出现,而是会与软件进行捆绑,最终形成自己的生态系统,外来者很难闯入,这其中最出名的大概就是微软和Intel组成的Wintel联盟了。

什么是编译器

解开生态系统难题的其中一个重要的环节就是编译器了。众所周知,所有应用软件都是使用相应编程语言(C/C++/Java等等)进行开发的,工程师使用编程语言中固定的词汇和格式编写,之后使用编译器识别代码中的词汇、句子以及各种特定格式,将它们转换成计算机能够识别并执行的二进制形式。

编译也可以理解为“翻译”,类似于将中文翻译成英文,它是一个复杂的过程,首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。然后是性能优化、生成可执行文件。期间涉及到复杂的算法和硬件架构。之所以复杂, 是由于它们具有处理多种问题以及相关数据集的能力。

通过编译器,开发人员可以很方便的实现业务平台的迁移,不需要修改业务代码,仅需要修改编译平台的配置,做到业务逻辑的一致。同时编译器内部根据业务执行的平台,对业务代码进行特定的优化,保证代码在硬件平台上性能达到最优。同时编译器不断升级维护也不会对上层运行的业务代码产生冲击,这样所有的APP厂商针对新平台的工作量会降到比较低的程度,大家的接受意愿才会更强烈,编译器最终的目标是帮助开发人员实现一次代码编写,跨平台运行。

国内现状

当前,随着国内手机厂商对系统优化的不断深入,头部厂商纷纷开始针对编译器进行优化。华为最早开源了方舟编译器,vivo有ART++,OPPO也推出了端云智能编译等。

随着国内芯片产业重视程度越来越高,越来越多的厂商开始真正重视芯片的研发并且意识到芯片生态系统的重要性,编译器作为其中的重要一环,为未来自主操作系统的推出起到重要的基础作用,也越来越被重视。而且国内计算行业的领头羊华为在516事件后,将打造鲲鹏、昇腾系列芯片的生态作为重中之重,在可以预期的未来,国内的计算行业将会迎来一场变革,也许在这一波变革中我们会真正建立起自己的生态,在我们这一代人手中彻底打破芯无力的现状。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    445

    文章

    47496

    浏览量

    407916
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10338

    浏览量

    206238
  • 编译器
    +关注

    关注

    1

    文章

    1564

    浏览量

    48531
收藏 人收藏

    评论

    相关推荐

    AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?

    替代吗?在网上找到的两个芯片的相关数据都是一样的,AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?
    发表于 01-08 06:36

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 362次阅读
    <b class='flag-5'>编译器</b>的优化选项

    请问MSP430到底有几个时钟呀?

    请问MSP430到底有几个时钟呀
    发表于 11-03 06:36

    ARM和DSP到底有什么区别?

    现在在学ARM,想知道ARM和DSP到底有什么区别?为什么有些地方用DSP有些用ARM
    发表于 10-19 07:20

    Keil修改ARM编译器及配置方法

    Keil MDK自 V5.36 版本之后,默认就不带 Arm Compiler V5版本编译器。如果需要使用 V5 版本编译器,就需要自己下载并安装。
    发表于 09-19 10:41 1816次阅读
    Keil修改ARM<b class='flag-5'>编译器</b>及配置方法

    编译原理:语言处理器、编译器的结构

    计算机是只认识二进制的,但是我们平常开发中根本不会使用二进制进行开发,我们使用的都是 Java、C 这类的高级语言,每种语言都会经过一系列的转换才能被计算机识别,那么到底是谁做的这项工作呢?一个被称为 编译器(compiler) 的大佬出场了。
    发表于 08-09 09:52 185次阅读
    <b class='flag-5'>编译</b>原理:语言处理器、<b class='flag-5'>编译器</b>的结构

    编译器的标准生命周期

    编译器的标准生命周期
    发表于 07-05 19:32 0次下载
    <b class='flag-5'>编译器</b>的标准生命周期

    Neuron 现场编译器用户指南

    Neuron 现场编译器用户指南
    发表于 07-04 20:47 0次下载
    Neuron 现场<b class='flag-5'>编译器</b>用户指南

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制器开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C编译器更适合8051内核。 SDCC是命令行固件开发工具,含预处理器、编译器
    的头像 发表于 06-16 15:19 3302次阅读

    是否8266的BASIC编译器之类的东西?

    是否 8266 的 BASIC 编译器之类的东西?做了一个搜索,我可以找到几个 BASIC 解释加载到 8266 上,使其充当 BASIC 编程环境。 但这不是我要找的。 我想要一个用于
    发表于 05-16 07:43

    峰会回顾第6期 | 毕昇编译器与OpenHarmony RISC-V生态的进展

    演讲嘉宾 | 曾建江 回顾整理 | 廖   涛 排版校对 | 李萍萍     嘉宾简介 曾建江,亚琛工业大学博士,华为毕昇编译器首席架构师、芯片软件协同设计部部长,拥有多年编译器芯片
    的头像 发表于 05-05 15:46 1070次阅读
    峰会回顾第6期 | 毕昇<b class='flag-5'>编译器</b>与OpenHarmony RISC-V生态的进展

    R32C/100系列C编译器包V.1.01 C编译器用户手册

    R32C/100系列C编译器包V.1.01 C编译器用户手册
    发表于 04-28 19:54 1次下载
    R32C/100系列C<b class='flag-5'>编译器</b>包V.1.01 C<b class='flag-5'>编译器</b>用户手册

    FPGA和CPLD到底有什么区别?求具体例子说明

    FPGA和CPLD到底有什么区别,还有VHDL,一直分不清他们什么差别。求具体例子说明
    发表于 04-23 11:49

    MCUXPRESSO编译器C++问题怎么处理?

    我的 MCUXPRESSO 编译器 C++ 问题
    发表于 04-20 06:11

    C/C++编译器的缺省字节对齐方式

    C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。
    的头像 发表于 04-15 11:24 682次阅读