程序员看芯片行业

        本来也算是一个学电路出身的,但后来成为一名纯软件程序员,近些日子,突然对芯片行业产生兴趣,或许在职业生涯的末段,更换一把领域,跨界到芯片行业。现在看来,并不是完全不可能。于是,对芯片行业开始关注了起来。

        芯片到底涉及了哪些知识,如何入门芯片?

        芯片到底是什么?集成电路(IC)是什么?芯片和半导体,集成电路有什么关系?

        现在是一个大谈元宇宙的时代,元宇宙我们可以简单认为是数字世界。

        而我们目前就是生活在一个物理世界和数字世界混合的时代,芯片正是这两个世界的连接器!

        这是怎么说的?难道不应该是计算机,手机,物联网设备?这样说也对,但支撑这些电子设备的核心就是芯片,简单的说,将物理世界的感受转换成数字信号,就是靠芯片。

芯片本质是什么?

        芯片 = 半导体 + 集成电路 

        数字世界,程序员都明白,最底层就是 0,1 组成的,而所有的存储,运算都是基于0,1的运算。学过数字脉冲的人会知道,0,1 的运算也就是与,非,或,与非,异或等几种运算。而数字脉冲电路可以进行简单模拟,构成这几种运算。

        

        如果再对这些电路进行组合,就可以完成加法减法运算,进而完成更复杂的运算。

        

        好了,电路讲到此为止,我讲这些,只是为了说明以下两点:
        1:  所有数字运算都可以通过电路来实现。
        2:  计算机的数字运算最终可推演到0和1的运算。

        我们来看看半导体的定义:

        半导体是一种加压可以导电,不加压绝缘的物体!这种特性可以很方便的模拟通与不通,0和1 的状况。

        PS: 导体导电,绝缘体不导电,而半导体,在不同电流控制下可以表现出不同的导电,或者不导电的特性,这个特征和真空电子管做电信号放大器的特性吻合,因此半导体可以被用来做固体电子元器件的材料。        

 如上图:栅极在加电的情况下,会连通。

注意:沟道channel 实际上是速度的瓶颈,越窄,效率越高。这就是我们指的芯片的10纳米,7纲米的宽度。宽度越小,速度越快。

        这些通道,我理解是用光刻机刻出来的,也就是我们的电路不是用元器件组装的,而是通过光刻机上刻出来。所以,光有晶体不行,还需要集成电路,只不过这个电路是通过光刻机在晶体上画出来的。

        集成电路就是由大量晶体管搭建的。严谨一点说,集成电路的最小单元是逻辑门,逻辑门是由晶体管搭建而成。可以说,半导体行业,就是拿晶体管去堆集成电路的行业。

        大家都听过曹冲称象的故事,曹冲很聪明,知道用石头来置换大象,方便的称出了大象的重量。到了现代社会,我们不再用置换法,而是将重量变成压力,而压力让电子芯片去感知,这样,通过芯片来获得大象的重量。

        这个例子还是想要说明,芯片是物理世界和数字世界的连接器。

说到芯片,必须说到摩尔定律

  英特尔公司联合创始人戈登·摩尔提出:

        半导体芯片上集成的晶体管和电阻数量将每隔 24 月增加一倍!

 上面讲过了晶体管的大小取决于栅极通道的宽度,就是我们一直在提的 5nm,7nm,10nm……

我们上面讲过,晶体的大小是有极限的,这决定了栅极通道的宽度也有理论极限,那是不是摩尔定律快要失效了呢?

也对也不对,考硅晶体这种材料,再考虑一些其它因素(热量,量子力学),大概理论极限是1nm(目前台积电已经在生产 5 nm 的芯片)。

        但是,先别忙,其实并不是这样。后面会讲到。实际上,芯片在100年内,都会一直往前走,前景一片大好。

芯片技术为什么会被KBZ,难在哪里?

        众所周知,我国的芯片产业被KBZ,到底芯片有多难,人家一K我们就真的被K住不能动弹了。

        首先,我们被K的是高端芯片,什么是高端芯片?就是手机使用的,面积小,运算量大,功耗低的芯片,也就是那种低于 10nm的芯片。

        难在哪里?

        首先是EDA软件,好了,做为软件开发人员,看到软件二字觉得亲切了。但是注意,这个软件要解决的是布电路图,是涉及上亿个元器件的电路图,你想想你要处理上亿的数据,估计会头疼,一次电路布线可能会算上一天,程序稍微差一点,那可能就是几个月(没法用了)。这种软件在全球也就几家公司做得好。我觉得普通的软件开发人员确实是不容易搞定这个。现在做应用开发的,已经没有多少是使用 C 编程的了,没人会在编程时去扣 malloc 的内存字节数和考虑哪种指令运算更快(估计得对计算机最低层的运算原理有较深的认识)。

        最近我接触到一个资深的芯片架构师(前HW美研所的负责人),他们正在做筹备做EDA软件(历害了),据他说,他从M国带了 8 个人回来,全是博士以上业内人士,其中有6个是用来写EDA软件的。因为,国内的工程师基本搞不定这事儿。

        然后是光刻机,这个大家都听说过,要在那么小的面积上完成这么大规模的线路的刻制,想想都难。对于10nm以下的需求,好象全球就只有荷兰的ASML可以搞得定,难度可想而知。

        接着是制作工艺,目前全球也就台积电和三星的代工厂站在顶端,具体原因我也说不清楚,总之,国内最顶端的中芯国际还差一些火侯。

        另外,芯片的底层架构,ARM,X86 这些理论专利实际上都在日本和美国人手里。我们目前还是直接拿来用。所以,国内大多数技术团队做设计的居多。

        我们来看看芯片整个的制作过程:

 

国内公司目前在整个产业链里基本排不到前三,有些领域还是空白。

所以,当我们说到国内有多少企业加入芯片行业,要有清醒的认识,实际上我们说的可能更多的是设计环节(包括华为,中兴,阿里,百度,字节,腾讯……)

不搞定一些关键环节,达成反制的效果,还是分分钟会被K。那是不是一定要全盘搞定呢?实际不一定,即使强如M国,他也没有搞定所有环节。

那我们具体来看看M国强在哪里?为啥他可以随便K其它国家?

我们这里不讲ZZ,只讲技术优势:

1: 底层技术。以最原理层的加法器专利为例:美国掌握了各种优秀的加法器设计,包括100晶体管的,80的,50的,涵盖了高性能和低功效的所有需求。也就是说,只要你用,你就必须要交专利费。甚至,我可以不授权你使用。

2: EDA软件,全球三家公司覆盖了基本所有的EDA软件市场,cadence, synopsys 是美国公司,第三家mentor graphics 虽然刚被西门子收购,但有很深的美国背景,总部现在还在美国。

3: 芯片加工和封控 没有被美国垄断,但每一个关键工艺技术中都有美国的核心专利和资本力量。
世界前五的半导体公司,有三家是美国。

4: 光刻机公司ASML 是荷兰的,但它最核心的技术此外光源是M国公司的,它加入了M国主导的一个联盟(有投名状),它背后的第一第二大股东都是M国资本。所以,美国说,你不能卖光刻机给中国,他们心里并一定愿意,但行动上只能照做。

5: 最后说到芯片晶圆制作,台积电,它的生产线上有大量M国半导体公司的产品,加工技术也绕不过M国,它的最大股东是M国花旗银行。

所以,大家可想而知,M国在芯片领域的影响力,它确实是可以为何欲为。

中国如何应对吗?我不知道。

芯片的技术发展,如何延续摩尔定律?

除了提高硅晶体管做小,减小沟道宽度以外。还有哪些方法可以提升?

1: 环绕栅晶体管技术:
        这其实是为了解决漏电的问题,因为晶体的大小有极限,一旦沟道太窄,就容易产生干扰,发生漏电。采用按此方案可以解决到 3 nm 及左右不会有漏电问题。
        之前的晶体管器件采用FinFET(中文叫“鳍式晶体管”),鳍就是鱼背上的那个竖起来的鳍。这种立体晶体管能够加强栅极对沟道的控制能力,漏电问题变小了。但解决问题的极限差不多是7nm,再小就有漏电问题了。
        原理:一般来说,器件受控面积越大,栅极对沟道的控制能力就越强。环绕栅晶体管把栅极完全把沟道围了起来,这就实现了对沟道最大程度的控制。

2: SoC 片上系统
        System-on-Chip,意思是在一颗芯片上集成一个完整的电路系统,比如:手机上就一颗芯片就是Soc芯片,它上面集成了CPU,GPU,存储,音视频处理。
        我们用华为海思的麒麟990这款当今市场上最先进的手机处理器芯片举例,它里面集成了8核CPU、16核GPU,还有3核NPU,也就是神经网络人工智能模块,还有高速闪存控制模块、图像处理模块、音频和视频处理模块等等,甚至它还把5G模块集成到了同一颗芯片上。
        我理解因为在一个小面积芯片上,集成了更多的功能,也算是提升了性能吧。

3: Sip 系统级封装
        System-in-Package,和SoC不同,一个封装里有好几个芯片,做工不同,每个芯片实现自已不同的功能,Sip的工艺难度也就低了很多。

PS:不管理SoC 还是 Sip,对EDA的软件提出了更高的要求。

综上所述,解决性能问题,有两条路,
        一条是自下而上,提高单个晶体管的性能(如:FinFET,GAAFET环绕栅极),
        另一条是自上而下,提高系统集成的能力,提高整体性能(如:SoC,Sip)。

芯片领域的热点和前沿技术

AI芯片:

        CPU是算是可以控制的通用芯片,面向并行运算或者图形处理的场景,CPU的效率就比较低了,于是,出了GPU,它在这个层面,变成了专用芯片。

        在AI领域,因为更多使用并行运算,所以,第一选择是GPU。

        后来,出了FPGA (专业可编程逻辑阵列),因为,在并行计算领域,实际上GPU已经是一颗通用芯片了,所以,灵活度不够。FPGA可以针对不同的AI问题,做一些定制。通过修改内部的器件连接方式,可以构成不同功能的芯片,这是它的强大之处(但,FGA的弱点也不少,价格高,性能,功耗,速度和芯片面积上都还有提升空间),所以,FPGA是AI领域的专用芯片。

        但是,FPGA实际上仍然是需要重新烧录的,定制的仅仅是电路器件,并不一定能满足所有变动的需求,而且性能不高。好了,最后就要说到ASIC了,就是专门定制的芯片,比如:Google有定制TPU。这是性能最高的专用芯片,当然,成本也是相当的高了。

新原理器件:

        不用硅行不行?

        比较有希望的是碳纳米管或者石墨烯这类低维材料,它们最大的优势是电子在其中的传输速度比在硅材料当中要快得多。

        还有自旋器件,自旋是电子天然具有的一个物理维度,是量子计算的核心。其实自旋在经典计算中也有大用处。你可以这么理解,自旋就是电子在顺时针或者逆时针自转,这其实就可以代表0和1嘛。所以,自旋器件的开关,就不要电子在两个“地铁站”之间流动了,只靠电子自转的翻转就行了。

        不过这些新材料和新结构的工艺难度非常大,尤其是如果想要做出几亿,甚至几十亿个器件规模的集成电路,还要保证均匀性、可靠性,非常困难。

可重构芯片

        通过更改软件来变化硬件的功能,这是一种美好的愿望吧?

        因为一颗芯片就可以应对大量不同的场景,就有足够的销量来摊平开发成本,可重构芯片技术是当今最前沿的领域之一,未来十年,这个领域一定会有很大的突破,算是FPGA的一种升级?      

经典芯片和量子计算混合

        这个首先要明白量子计算是什么。量子计算并不是要替代经典计算机,而是一种补充,因为量子计算还不成熟。

        基于经典芯片的人工智能EDA软件,对于芯片本身的布线大有用处。或许有一天,可以让AI来制作AI芯片。

类脑芯片

        人脑的运算方式与经典芯片不同,电脑是冯诺依曼体系,运算和存储是完全分离(想不清楚的,去看看三体中秦军模拟集成电路)。

        最新的技术发明了阻变存储器。

        所谓阻变是说器件的电阻会发生变化,电阻值会根据流过的电流来改变,换句话说就是你上一次的运算结果会以电阻值的形式保存在这个电阻里,来影响我下一次的计算。

中国芯片领域的现状

        中国芯片市场占全球 1/3,但产量只占 5%。

        中国到底有多少厂商在做芯片,在做什么领域,我们来捋一下。

        芯片制造,封测厂——中芯,华力微,长江存储,紫光展税,长鑫科技……

        芯片设计——华为,中兴,阿里,百度,OPPO,小米,海尔,格力,比亚迪(可能还有腾讯,节字等),这块可能算是落后得比较少的领域……

        汽车智能——地平线,芯驰,芯擎科技……

        数据处理器(DPU)——珠海星云智联,云豹科技……

        AI芯片和GPU——寒武纪,壁仞,燧原,沐曦,摩尔线程、登临……

        小芯片——恒玄科技(耳机),芯翼信息科技、上海移芯通信……

        好了,上面列了一大堆,都只是芯片这个行业的了解,和实际的芯片技术无关,刚刚入门,需要进一步学习。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 一位优秀的嵌入式程序员需要具备以下技能: 1. 熟练掌握计算机系统原理: 包括计算机组成、系统编程、网络编程、操作系统等。 2. 精通嵌入式系统开发: 包括嵌入式系统硬件平台、嵌入式系统软件开发、嵌入式系统调试与测试。 3. 熟练掌握多种编程语言: 包括 C、C++、Python 等常用编程语言。 4. 具备良好的算法和数据结构能力: 包括算法分析、设计、实现和优化。 5. 了解通信协议: 包括常用的通信协议,如 TCP/IP、HTTP、UDP 等。 6. 具备良好的代码能力和软件工程素养: 包括代码规范、代码评审、代码版本管理、持续集成和持续交付等。 7. 具备团队合作能力和沟通能力: 包括与团队成员协作、解决问题、沟通和交流。 8. 具有不断学习和提高的热情: 包括对新技术、新工具和新方法的不断探索和学习。 ### 回答2: 一个优秀的嵌入式程序员需要具备以下技能: 1. 物理硬件知识:了解嵌入式系统的硬件结构,包括处理器、内存、外设等,并能够深入理解电子电路和模拟数字信号处理。 2. 编程语言掌握:熟练掌握至少一种嵌入式系统常用的编程语言,如C、C++或汇编语言,能够根据具体需求灵活选择合适的语言进行开发。 3. 操作系统理解:了解嵌入式操作系统的原理和常用的操作系统,如FreeRTOS、Linux嵌入式等,并能够根据项目需求选择合适的操作系统。 4. 驱动开发能力:具备硬件驱动开发的能力,能够编写底层驱动程序,实现与硬件的交互和控制。 5. 调试和故障排除:能够熟练运用各种调试工具和方法,快速定位和解决嵌入式系统中的问题和故障。 6. 通信协议熟悉:了解嵌入式系统中常用的通信协议,如UART、I2C、SPI、CAN等,并能够设计和实现相应的通信功能。 7. 项目管理能力:具备良好的项目管理能力,能够合理规划、组织和执行嵌入式项目,并能够有效地与团队成员进行沟通和协作。 8. 持续学习意识:嵌入式技术更新迭代很快,一个优秀的嵌入式程序员需要具备持续学习的意识,能够不断跟进新技术,保持自身的竞争力。 综上所述,一个优秀的嵌入式程序员需要具备硬件知识、编程语言掌握、操作系统理解、驱动开发能力、调试和故障排除能力、通信协议熟悉、项目管理能力和持续学习意识等多个方面的技能。 ### 回答3: 一个优秀的嵌入式程序员需要掌握多个技能方面。 首先,他们需要有扎实的编程能力。嵌入式系统通常会使用C或C++等低级语言进行开发,因此程序员需要熟悉这些语言的语法和特性,能够高效地编写代码,并理解如何进行内存管理和调试。 其次,他们需要了解硬件知识。嵌入式系统通常与硬件设备紧密结合,因此程序员需要了解微处理器和微控制器的工作原理,能够读取和理解芯片手册、数据手册等硬件文档。他们还应该了解外设接口和通信协议(如UART、SPI、I2C等),能够与硬件工程师合作进行硬件与软件的交互。 此外,良好的系统分析与设计能力也非常重要。一个优秀的嵌入式程序员需要能够理解系统需求和功能,根据需求设计合适的软件架构和算法。他们需要具备模块化设计思维,能够将复杂的系统划分为不同的模块,并管理模块之间的接口和通信。 另外,对于软件工程的知识也不可或缺。嵌入式系统开发一般会有严格的资源约束和实时性要求,因此程序员需要学习如何进行优化和调试,如何进行测试和验证,如何进行版本控制和团队协作等软件工程实践。 最后,持续学习和创新精神也是一个优秀嵌入式程序员所需具备的。嵌入式系统技术在不断发展,面临的挑战也日益复杂,因此程序员需要保持学习的状态,关注行业动态,并能够思考和应对新的技术和问题。 综上所述,一个优秀的嵌入式程序员需要具备扎实的编程能力、硬件知识、系统分析与设计能力、软件工程知识,以及持续学习和创新精神。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值