程序员的资源宝库

网站首页 > gitee 正文

芯片制程-芯片设计-汽车-高性能计算杂谈

sanyeah 2024-03-29 17:49:30 gitee 14 ℃ 0 评论

 

芯片制程-芯片设计-汽车-高性能计算杂谈

参考文献链接

http://beibaijia.com/11601.html

https://mp.weixin.qq.com/s/p6s30acNhjPxDoB74u0iRw

https://mp.weixin.qq.com/s/ousE3sYtDd7zhV-_AtvA7w

https://mp.weixin.qq.com/s/QEuF5TJwtsrb-y__M9N2Cw

https://mp.weixin.qq.com/s/nzoxFkt3jOEgflBbpZ3U7g

https://mp.weixin.qq.com/s/Rxix7QErJTbjMu7kweiHrg

0.768nm堪比两个硅原子!美国造出全球最高分辨率的光刻机

众所周知,目前5nm及以下的尖端半导体制程必须要用到价格极其高昂的EUV光刻机,ASML是全球唯一的供应商。

  更为尖端2nm制程的则需要用到ASML新一代0.55 NA EUV光刻机,售价或高达4亿美元。

  Intel正计划利用新一代0.55 NA EUv光刻机来开发其intel 20A(2nm)及18A(1.8nm)制程。

  但是,要想实现1nm以下的更先进的制程,即便是ASML新一代0.55 NA EUV光刻机也束手无策。

  近日美国一家旨在开发和商业化原子精密制造 (APM) 技术的公司Zyvex Labs 宣布推出了全球分辨率最高的亚纳米分辨率光刻系统“ZyvexLITho1”。

  它并没有采用EUV光刻技术,而是基于STM扫描隧道显微镜,使用的是电子束光刻(EBL)方式,可以制造出具有0.768nm线宽(相当于2个硅原子的宽度)的芯片,精度远超EUV光刻机。

 

 

   一、实现更高的分辨率和精度的关键:氢去钝化光刻

  ZyvexLitho1所采用自我显影的电子束光刻(EBL)技术的核心是使用氢去钝化光刻(HDL)从Si(100) 2 x 1二聚体列(dimer row)重建表面去除氢(H)原子。

  氢去钝化光刻是EBL的一种形式,它通过非常简单的仪器实现原子分辨率,并使用能量非常低的电子。

  它使用量子物理学有效地聚焦低能电子和振动加热方法,以产生高度非线性(多电子)的曝光机制。HDL使用附着在硅表面的单层H原子作为非常薄的抗蚀剂层,并使用电子刺激解吸在抗蚀剂中创建图案。

  传统EBL使用大型昂贵的电子光学系统和非常高的能量(200Kev)来实现小光斑尺寸;但是高能电子(获得小光斑尺寸所必需的)分散在传统EBL使用的聚合物抗蚀剂中,并分散沉积的能量,从而形成更大的结构。HDL实现了比传统EBL更高的分辨率和精度。

 

 

   数据显示,光刻胶中的沉积能量不会下降到光束中心的10%,直到径向距离约为4nm。

  使用HDL,实验团队能够暴露比EBL的10%阈值半径小>10倍的单个原子。

  这个小得多的曝光区域令人惊讶,因为HDL不使用光学器件,只是将钨金属尖端放置在H钝化硅样品上方约1nm处。

  人们会期望,如果没有光学器件来聚焦来自尖端的电子,那么曝光区域会更大。

 

 

   △距氢(H)钝化硅表面约1nm的W扫描隧穿显微镜(STM)尖端

  电子似乎不太可能只遵循暴露单个氢原子所需的实心箭头路径。

  为了解决这个谜团,必须了解电子实际上不是从尖端发射(在成像和原子精密光刻模式下),而是从样品到尖端(在成像模式下)或从尖端到样品(在光刻模式下)模式。

  使用具有无限平坦和导电衬底的简单模型、STM尖端顶点处单个W原子的发射以及简化的隧穿电流模型,我们将看到电流随着隧穿距离呈指数下降。

 

 

   △如果没有亚纳米级别的分辨率和精度,这种 7.7 纳米(10 像素)正方形的曝光是不可能的。

  二、ZyvexLitho1的五大特色功能

  ZyvexLitho1 系统基于 Zyvex Labs 自 2007 年以来一直在完善的扫描隧道显微镜 (STM) 技术,配备了低噪声、低延迟的20位数字控制系统,允许用户为固态量子器件和其他纳米器件和材料创建原子精度的图案。

  ZyvexLitho1套件还包括配置用于构建量子器件的 ScientaOmICron 超高真空 STM。

  这也使得ZyvexLitho1系统具备其他任何商业扫描隧道显微镜不具备的功能和自动化功能,包括:能够实现无失真成像、自适应电流反馈回路、自动晶格对准、数字矢量光刻、自动化脚本和内置计量。

 

 

   △ZyvexLitho1系统

 

 

   无失真成像:

  Zyvex Labs称ZyvexLitho1系统拥有专有的蠕变和滞后位置校正算法,支持无失真成像和原子级精确的尖端定位,以实现前所未有的光刻精度。

 

 

   △在200秒完成500nm跳跃后的未修正蠕变vs.蠕变修正后

  自适应电流反馈回路:

  所有商业 STM 都使用相同的比例积分 (PI) 回路来升高和降低 STM 尖端,因为它扫描以保持设定点电流。不幸的是,这种简单的控制循环提示崩溃是常见的。如果只是用于成像,这是可以容忍的,但在进行光刻时这是一个严重的问题。ZyvexLitho1 的控制系统中采用了获得专利的自适应电流控制回路,可显着减少尖端碰撞。

 

 

   △上图显示了跨 硅 表面的线扫描,其中有几个扰动导致轮廓 E 中的电流误差,其中控制回路是标准 PI 回路。在配置文件 F 中,自适应控制回路打开,并且尖端扫描同一行。更准确的电流控制可提供更准确的轮廓,并且当表面扰动较大时,可避免尖端碰撞。(来源:TajaddodianfAR, F., Moheimani, S. O. R., &AMp; Randall, J. N. (2018). Scanning Tunneling Microscope Control: A Self-Tuning PI Controller Based on Online Local Barrier Height Estimation*. IEEE Transactions on Control Systems Technology, 1–12. HTTPS://doi.org/10.1109/TCST.2018.2844781)

  自动晶格对准:

  由于光刻模式和成像模式在能量上分离良好,因此可以在光刻前后对硅表面进行成像。这种非曝光成像模式允许自动识别硅晶格,因此可以自动识别像素在表面上的位置。这种 Lattice Lock 过程自动保持尖端定位(以及因此光刻)准确。

 

 

   数字矢量光刻

  ZyvexLitho1 使用氢去钝化光刻从Si(100) 2×1 二聚体列(dimer row)重建表面去除氢(H)原子。这种自我显影的曝光技术本质上是二元的。

  H-Si 键要么断裂(将 H 原子送入真空),要么不断裂。没有部分暴露或邻近效应。利用这个过程和作为硅表面晶格的全局基准网格允许数字光刻。

  亚纳米像素是 4 个表面硅原子。可以将设计网格与Zyvex Labs的像素网格相同的计算机辅助设计 (CAD) 文件加载到 ZyvexLitho1 中,并且可以将图案自动分割成不同的几何形状,从而允许尖端矢量与不同的光刻模式一起使用。然后可以自动进行曝光。

 

 

   自动化和脚本:

  几乎所有操作都可以自动化。单个命令或脚本的命令行界面。内置和用户编写脚本的脚本菜单。多种模式输入模式——如几何形状、矢量列表、黑白位图。

  内置计量:

  提供无损成像模式,以便新图案可以与旧图案对齐,并且可以在写入后检查图案质量。

  三、现在下单,6个月后即可交货

  需要强调的是,ZvyvexLitho1系统并不是一款实验室原型产品,而是一款已经可以商用的产品。

  根据Zyvex Labs官网介绍,目前其正在接受 ZvyvexLitho1 系统的订单,交货时间约为六个月。

 

 

 

 

   据悉,ZvyvexLitho1将会有标准版和高级版两个不同版本,具体售价未知。

  Zyvex Labs表示,ZvyvexLitho1制造的芯片可以制造出高精度的固态量子器件,以及纳米器件及材料,对量子计算机来说精度非常重要。将使量子计算机能够获得强大的加密以实现真正安全的通信,更快地开发新药,并做出更准确的天气预报。

  2015年费曼奖得主、硅量子计算公司的首席执行官、新南威尔士大学量子计算和通信技术中心主任Michelle Simmons教授表示:“建立一个可扩展的量子计算机有许多挑战。我们坚信,要实现量子计算的全部潜力,需要高精度的制造。我们对ZyvexLitho1感到兴奋,这是第一个提供原子级精密图案的商业化工具。”

  STM光刻技术的发明者、2014年费曼奖得主、伊利诺伊大学教授Joe Lyding表示:“到目前为止,Zyvex实验室的技术是最先进的,也是这种原子级精确光刻技术的唯一商业化实现。”

  ScientaOmicron的SPM产品经理Andreas Bettac博士表示:“在这里,我们将最新的超高真空系统设计和ScientaOmicron的成熟的SPM与Zyvex的STM光刻专用的高精度STM控制器相结合。我期待与Zyvex继续进行富有成效的合作。”

  虽然EBL电子束光刻机的精度可以轻松超过EUV光刻机,但是,这种技术的缺点也很明显,那就是产量很低(看前面的介绍,ZvyvexLitho1光刻时,500nm的位移,需要200秒的时间。另外电子束光刻),无法大规模制造芯片,只适合制作那些小批量的高精度芯片或者器件。但不管怎样,这也给半导体制造向着1nm以下的皮米级前进提供了一个可行的方向。随着技术的进步,未来EBL电子束光刻面临的一些难题或许也有可能会被解决。

  关于Zyvex

  Zyvex Corporation 由 Jim Von EHR 于 1997 年创立,旨在开发和商业化原子精密制造 (APM) 技术,以制造具有原子精密度的产品。如果开发得当,APM 允许灵活制造各种产品,从设计材料到超级计算机再到先进的医疗设备。

  在创办 Zyvex Corporation 之前,Jim 作为软件企业家的背景使他意识到 APM(创建“数字物质”)可以比任何现有技术更有效、更准确和更具成本效益地制造产品。

  早期,Zyvex Corporation 对 APM 进行了基础研究,并经常在此过程中构建自己的工具。最近,该公司通过开发商业纳米材料和纳米操作产品将该技术推向市场。

  2001 年,Zyvex Corporation 获得了美国国家标准与技术研究院先进技术计划 (NIST ATP) 颁发的一项重要研究奖。纳米技术应用和制造的组装商:开启纳米技术时代(程序 ID 70NANB1H3021)是与霍尼韦尔和几所支持微机电系统 (MEMS) 开发、纳米探测、纳米操作和其他基础纳米技术工作的大学共同承担成本的五年联合计划。

  2003 年和 2004 年,Zyvex 公司获得了美国 DARPA(国防高级研究计划局)颁发的小型企业创新研究 (SBIR) 奖,以开发 MINI-SEM。小型扫描电子显微镜和用于生产低成本mini-SEM的制造组装技术支持了Zyvex在电子光学技术上的发展。

  2004 年,Zyvex 公司还收到了美国能源部的另一份 SBIR。用于透射电子显微镜的 MEMS 纳米探针(程序 ID DE-FG 0204ER84130)专注于开发用于透射电子显微镜 (TEM) 的基于 MEMS 的纳米操作器。该计划的结果间接导致了Zyvex MEMS 精细定位阶段的改进。

  2007 年 4 月,Zyvex Corporation 重组为三个独立的公司,以确保持续专注于产品:Zyvex Performance Materials LLC、Zyvex Instruments LLC 和 Zyvex Labs LLC。资产在三个公司之间分配,并为材料和仪器业务聘请了专门的管理人员。

  目前,Zyvex Labs 有两个目标:1、开发 APM;2、开发微细加工和 3D 微组装技术。Zyvex Labs的 MEMS 技术是在 Zyvex 为期 5 年、耗资 2500 万美元的 NIST ATP 项目期间开发的,目前正用于制造微型科学仪器,例如微型扫描电子显微镜和微型原子力显微镜,以及下一代纳米探测系统。这些系统将为更大的市场合作伙伴开发或根据最终产品分拆成独立的公司。Zyvex Labs 也是 Nano-Retina的创始合作伙伴,该公司正在构建一种先进的假肢视觉设备。

  需要指出的是,Zyvex Labs 的资金主要来自政府研发合同、私人投资和合同研究。此次推出的ZvyvexLitho1系统也是在DARPA、陆军研究办公室、能源部先进制造办公室和德克萨斯大学达拉斯分校的Reza Moheimani教授的支持下完成的。

芯片战争:国运背后的终极竞赛

 “硅对钢的胜利”
1991年1月17日凌晨,当美军第一枚导弹砸向巴格达时,睡梦中被惊醒的萨达姆并不怎么惊惶。
此前几个月,美国一直忙着调兵遣将,海湾地区已经集结起美军三个航母战斗群,但萨达姆充分展示了楞的不怕横的二愣子本色,在他看来,自己手下拥兵百万,要人有人,要装备有装备,跟谁打也不怵。

 

 意气风发的萨达姆,如今坟头草都两米高了。

单从纸面上看,当时伊拉克军队常规武器装备,比当时的中国军队还要强些。萨达姆的如意算盘很简单:美国人接受不了多少牺牲,只要把美军拖入战争泥潭,迟早能把美国人的耐心耗没,然后退兵。越南战争不就是如此么?
但这一次,剧本变了。
严阵以待的伊拉克军队,并没有看到预想中的敌人,朝他们飞袭而来的,是100多枚来自美军军舰的“战斧”式巡航导弹,代号“沙漠风暴”的军事行动正式开始。
此后一个多月时间里,伊拉克军队始终没有看见一个敌人,只有数千枚导弹从天而降,将伊拉克的防御系统摧毁殆尽。与以往司空见惯的地毯式轰炸不同,这一次取而代之的,是外科手术般的精确打击:
对伊拉克参谋部的空袭,炸弹直接准确地从烟囱里钻了进去;对飞机库的轰炸,美军先炸开大门,再把导弹送到机库里;装备先进传感器的预警机,使伊拉克飞机刚起飞便被发现击落,根本没有机会升空。
整个世界都看得目瞪口呆——原来,打仗还可以这样打?
后来的地面战争大同小异,看似强大的伊拉克百万雄兵,在多国部队的各种高精尖武器打击下,如摧枯拉朽一般灰飞烟灭。这场仗打下来,美军因战事死亡的士兵还不到200人,给全世界上演了一课什么叫高科技战争。

 

 

 海湾战争中大显神威的“战斧”导弹

当时冷战已接近尾声,包括中国在内的很多国家作战思维还停留在二战时期,以为只要凭借钢铁洪流和人海战术就能取得胜利。直到海湾战争才发现,时代变了。
当时伊拉克军队装备的是一水儿的苏制武器,其中T-72坦克与美军M1A1坦克的性能对比,成为举世关注的焦点。
发生在巴士拉南部的坦克大战中,美军以近乎0的代价将200多辆伊军坦克全歼,取得压倒性的胜利。
T-72和M1A1同属第三代坦克, 为何差距如此之大?
原因在于,两者在信息化程度上存在巨大差距。M1A1普遍装备热成像仪、先进传感器和计算机火控系统,使美军能够先敌发现,先敌开火。
这场战争,后来被媒体称为“硅对钢的胜利”。
这是因为,美军使用的诸多高科技武器,从导弹、预警机、电子干扰机、隐形战机,到幕后功臣GPS系统——所有这些高科技装备,背后所倚赖的核心技术,都是半导体芯片技术。
而这一切优势的背后,是美国发达的半导体工业。
苏联半导体技术的止步不前,使得第三代苏式装备与美军有了明显的性能差距:苏-27装备的火控雷达,计算速度只有17万次/秒,而美军同代的F-15,已经达到了惊人的4000万次/秒。苏联导弹命中率有60米的误差,而美军导弹只有15米。
这种差距,追根溯源,来自过去半个世纪里,两国在半导体技术路线上的不同选择。草蛇灰线,伏脉千里,历史的每一次轰然巨变,源头往往都隐藏在并不起眼的细节里。

 “20世纪最重要的发明”
1947年,在当时世界上最强大的企业实验室贝尔实验室,威廉·肖克利和另外两位物理学家共同发明了晶体管,用于取代过去的真空管作为信号放大元件。顺便说一句,因为发明晶体管,这位老兄后来获得了诺贝尔物理学奖。
不过一开始谁也没想到,这个小小发明后来被称为“20世纪最重要的发明”,由此引发的半导体技术革命,更是彻底改变了未来世界的面貌,围绕它的争夺、竞赛、阴谋,影响了未来世界的整个地缘政治格局。

 

 世界上第一个晶体管

今天的半导体工业,国与国之间的竞争激烈异常,但晶体管诞生的最初三十年里,整个半导体产业可以说完全是美国独领风骚的时代。
贝尔实验室诞生了第一只晶体管,德州仪器制造了世界第一台晶体管收音机,仙童半导体发明了集成电路,IBM推出了第一台跨越代际的集成电路计算机……野蛮生长,而又生机勃勃。
1965年,英特尔创始人之一戈登·摩尔在《电子学》杂志上发表文章,预测集成到芯片上的晶体管数量,每年将增加一倍。当时恐怕没有人想到,这个36岁的年轻人,精准地预测了20世纪下半叶人类信息革命的进程。
回望半导体发展史,这个行业所有最重要的理念、技术和产品,都诞生于那个时代的美国,尤其是硅谷。
二战结束后,一份名为《科学,无尽的前沿》的报告被摆上美国总统杜鲁门的案头,这份报告希望美国能够通过巨量资金支持,激励科学家探索最前沿的科技,鼓励企业将科技成果向应用层面转化。
1957年,苏联率先发射了第一颗人造卫星,美国上下举国震惊,称之为“斯普特尼克时刻”。为了追上对手,美国加大太空竞赛投入,在太空电子设备中尽可能使用硅晶体管。
美国半导体技术的产业化之路,一开始最重要的推动力量,是美国的军工需求。五六十年代,美国军方的采购订单,为硅谷初生的半导体企业提供了70%的研发经费。集成电路刚发明的那几年,70%的政府资助来自空军。
1969年7月16日,阿波罗11号飞船登上月球,人类文明向太空迈出了一大步。在这一史无前例的宏大计划中,共使用了100万块芯片。
六十年代初,苏联与美国在尖端科技领域几乎看不出差别。当时的苏联,发射了人类第一颗人造卫星,下水试航了核潜艇,掌握了一亿吨级核武器和洲际导弹技术。赫鲁晓夫在演讲中狂妄地对西方外交官说:

“我们将埋葬你们。”

电子和计算机在当时还算新兴产业,苏联人的脚步也跟的很紧。在苏联科学家努力下,苏联晶体管的问世,只比美国晚了几个星期,1957年苏联便生产出了自己的晶体管收音机。
但后来的历史轨迹证明,在20世纪最重要的技术赛道,苏联人却做出了错误的判断。

苏联如何错失半导体
1976年9月6日,苏联第11航空军的几架米格-25战机正在远东地区参加演习。当飞机接近日本海岸时,编队中由别连科上尉驾驶的米格-25突然转向,拉低高度避开苏联雷达,直接闯入日本领空。
如临大敌的美军飞机立即升空拦截,却意外发现,这架米格-25降落在日本北部一处民用机场——这架飞机居然是叛逃而来的。驻日美军立刻迫不及待的控制了飞机,然后用最快的速度将其大卸八块。米格-25的秘密,已经整整困扰了他们9年。
米格-25由苏联米高扬-古列维奇设计局研制,1967年首次亮相,专门用来拦截美军轰炸机。甫一问世,米格-25便刷新了各项世界纪录,成为当时飞的最高、速度最快的截击机,第四次中东战争期间,甚至做出过以高速甩开来袭导弹的壮举。
美国人如坐针毡,但一直搞不清楚,这架飞机的性能是怎么做到的。

 

 一代传奇米格-25

别连科的叛逃让美军如获至宝,但美军工程师的拆解结果,却让整个五角大楼大跌眼镜。苏联人的技术在很多方面都出人意料的过时,其中最让他们惊讶的是,米格-25的电子设备使用的不是晶体管与集成电路,而是像葡萄串一样臃肿的真空管。
苏联人开始在半导体领域并不落后多少,但问题是,苏联领导人把预备第三次世界大战视为头等大事,他们发现,在核爆试验中,晶体管很容易被烧毁,而电子管抗干扰能力强的多,决策层于是脑袋一拍,决定走真空管小型化之路。
就这样,当美国的半导体产业在“摩尔定律”指引下狂奔时,苏联在20世纪最重要的技术革命中选错了方向。
当时苏联重视基础教育,培养的科学家和工程师数量是美国的两倍,在集中力量搞科研攻关上优势明显。但苏联的计划经济土壤,与半导体产业的进化规律,却是天然的不相容。
1967年,白俄罗斯一家半导体工厂坏了一台中压断路器,需要重装一台,副厂长在党委会上提出要求,经讨论后报给明斯克市电子工业管理局。由于是计划外,需求被层层上报到市计委和白俄罗斯计委,再层层审批拨款给一家断路器厂家。等工厂最终拿到需要的断路器时,已经是三个月过去了。
因此,当苏联人在如此僵化的体制下埋头追赶时,美国硅谷的工程师们,正在以每18个月将晶体管密度增加一倍的速度,将对手甩得连自己车尾灯都看不到。
60年代后期,苏联科学家开始觉察到,美苏在计算机领域的差距在拉大,但他们很难在自己的层面改变大局。计划经济的思维和模式,已经根植在这个国家的血液中。
苏联错过了半导体,也就错过了后来的计算机革命,错过了互联网革命。
这种差别在六七十年代尚不明显,1970年代,巅峰时期的苏联GDP一度接近美国的70%,但之后被对手越甩越远。三十年后,当美国进入信息社会,苏联整体上还停留在工业社会,与对手产生了代际的差距。
吴军博士在《浪潮之巅》中认为:“苏联落后的根本原因,就是错过了半个世纪以来围绕半导体集成电路的信息革命。”
这种影响,也一直延续到今天。苏联解体时,没什么像样的半导体产业,俄罗斯电子工业所需的芯片,也几乎全靠进口。俄乌战争中,俄军坠毁的导弹被发现,里面安装的竟然是来自中国温州产的电路板。

“日本可以说不?”
海湾战争震惊了整个世界,作为美国的小弟,日本似乎也感觉“与有荣焉”,自信心爆棚。当时日本右翼代表石原慎太郎和盛田昭夫合作出了本书《日本可以说“不”》,书中说“没有日本的芯片,美国就打不赢这场战争。”
美军在战争中使用的高科技武器,确实大量使用了从日本进口的半导体芯片,美国人正开始担心,对日本芯片的依赖会带来国家安全。偏偏这时候,日本人不知趣地站出来打大哥的脸:“假如日本把芯片卖给苏联而不是美国,美苏军事力量会很快失去平衡。”
就差没冲大哥喊上一声:“走两步,没病走两步!”
不过,说起来美国人也怨不得别人,因为日本半导体工业的崛起,一开始全是美国人扶持起来的。
日本投降后,美国本打算对日本进行彻底的去工业化,消除其战争潜力,不料朝鲜战争爆发,军需订单源源不断地涌入日本,带动了日本经济的恢复。
德州仪器发明了晶体管收音机,但将收音机卖到全世界的,却是日本的索尼。
盛田昭夫在二战后的废墟中,创建了索尼公司的前身东京通信。他决意发展半导体技术,专门跑到美国取经,希望从美国的西部电气购买晶体管生产的专利授权。在美国,他看着纽约的帝国大厦不禁感叹:

“日本和这样的国家交战,真是鲁莽啊!”

当时冷战伊始,日本地处前线,所以美国人对日本发展自己的半导体技术相当宽容,甚至还慷慨地向日本转移了电视机、录音机、计算器等数百项技术。当时,几乎所有日本企业都在如饥似渴地从美国引进技术、学习消化。美国人在演讲中取笑,台上每翻动一页PPT,都会引起台下日本人争先恐后地记笔记。
不过,美国人很快就要笑不出来了。
作为追赶者,日本人在半导体技术攻关上,采取了后来被屡次证明有效、今天也正在被我们使用的策略,那就是:
整合资源,集中力量办大事。
1974年,日本政府制定“超大规模集成电路计划”,砸下720亿日元,整合全国产、学、研界资源集中攻关,结果只花了6年时间就攻下了美国30%的内存市场。
更让美国人窒息的是,日本产品不仅成本低,质量还超过美国同类产品。惠普电脑在内存采购招标中发现,日电、东芝的产品远超英特尔、德州仪器。 
1983年,靠存储芯片起家的英特尔被日本企业逼到墙角,总裁安迪·格鲁夫破釜沉舟,不得不放弃已经毫无优势的存储芯片业务,全面转向集成芯片,方才起死回生。
到1986年时,全球前10大半导体企业中,有6家来自日本,前三名更是被日电、东芝、日立垄断。
更让美国人难以容忍的是,日本富士通公司提出要收购美国仙童半导体(Fairchild Semiconductor)公司。在硅谷,仙童半导体是神一般的存在,英特尔、AMD创始人都曾在仙童工作。
80年代以前,美国半导体企业基本处于放任自主的状态。当时美国主流思想是自由竞争,很少干预企业经营。但现在,面对以举国体制发起进攻的日本半导体企业,美国人终于坐不住了。
英特尔创始人诺伊斯挺身而出,牵头成立了美国半导体工业协会(SIA),领导这场与日本人的芯片战争。
不过,硅谷的企业家们,以往很少与华盛顿的政客打交道,诺伊斯是产业界领袖,在政界却几乎毫无人脉。半导体协会的游说开始效果不大,直到后来他们第一次祭出了一个后来屡试不爽的大招:国家安全。
这一下,火终于被扇起来了。
今天的美国从总统到媒体,无不在大肆渲染中国威胁,但如果穿越回80年代,你会发现,报纸上连篇累牍都是日本威胁论。时任美联储主席格林斯潘在回忆录中回忆:

20世纪80年代末的日本,是“斯普特尼克危机”以来,让美国第一次如此强烈地感到外国威胁。
“日本威胁论”愈演愈烈,偏偏这时候,不知好歹的日本右翼宣称日本可以对美国说“不”。大洋彼岸的美国政客,很快用行动告诉日本人:不,你不能。
美帝的铁锤,很快就锤到了日本人头上。
1987年6月30日这天,美国三名共和党议员来到国会大厦前,他们每人手里都拎着一把大铁锤,身后还跟着大群新闻记者,很明显是要来搞事情的。
这些西装革履的政客们,将一台日本东芝公司生产的收音机放在国会大厦台阶上摆好,然后你一锤我一锤地将收音机砸了个稀烂,随行记者举起相机记录下这一刻。
第二天,议员抡大锤的照片登上了各大报纸的头版。

 

 砸收音机事件的直接导火索,是不久前发生的“东芝事件”,也就是东芝公司违反“巴统”禁令,向前苏联出口了几台先进数控加工机床。但更大的背景是,当时美日之间不断升温的贸易摩擦,尤其是半导体领域的激烈竞争。

美国当年对付日本的套路,今天听来一如既往的熟悉:制裁日本头部公司,征收反倾销税,发起贸易战。
比如,1982年6月,美国通过钓鱼执法查出“IBM商业间谍事件”,逮捕了涉嫌窃取IBM技术的日立和三菱员工,对两家公司进行制裁。
里根政府派出了一个名叫莱特希泽的人,作为对日贸易谈判主将。请记住这个名字,30年后,这个素以性格强硬著称的鹰派人物将再次坐上谈判桌,只不过对手换成了中国。
美日之间虽说是谈判,但日本根本没有底气说不,最后不得不与美国签订《美日半导体协议》。根据协议,日本必须停止芯片倾销,而且要根据美方的核算成本,以“公平”的价格出售芯片,同时保证美国半导体在日本市场的份额达20%以上。
日本《选择》月刊回忆了这段不堪回首的历史,悻悻写到:

东芝事件发生后,日本领教了触怒美国的后果,日本半导体产业开始自主限制对美出口,放缓研发和投资,步入衰退之路。

曾经霸占世界半导体十大公司大半榜单的日本公司,到2005年下滑到了3家,而到了2016年,只剩下东芝一家在苦苦挣扎。
不过,过去三十年的积淀,毕竟还是给日本半导体产业留下了丰厚的遗产,日企在上游材料和设备环节仍然具有绝对优势——这种优势,必要时也能够转化为武器。
2019年日韩政治冲突中,日本限制对韩出口光刻胶、高纯度氟化氢等原材料,导致韩国半导体生产线差点停工,急得三星高层赶紧跑到日本疏通关系。
这也难怪,日本半导体产业陨落之路,虽说主要来自美国的打压,但韩国人的挖坑设陷,也实在是起到了“功不可没”的作用,韩国半导体产业崛起的过程中,对日本半导体产业的落井下石,很难不引起日本人的种种怨念。

韩国人的进击
今天的韩国,人均GDP突破3万美元,妥妥的发达国家。但如果把时间往前推到上世纪60年代,韩国还穷的叮当响,北边邻居的生活水平要比韩国高得多。
70年代,韩国政府眼馋日本通过出口半导体产品赚取大量利润,决定向日本学习,发展半导体产业。
1983年,三星公司建立了第一座半导体工厂。此时的美国,半导体领域正被日本打的溃不成军,节节败退,他们正需要扶持一个小弟帮助狙击日本,一眼便看中了浓眉大眼的三星。
美国人很大方,马力全开地给三星输血。他们支持三星在硅谷成立研发团队,300多名美国工程师加入其中,使三星仅仅用了3年就掌握了256K内存的关键技术。
但当时半导体领域的龙头企业基本都在日本,三星只能在低端芯片上混口饭吃,中高端市场还是牢牢被日本人把持。
1986年,三星邀请日本事业部部长川西刚访问三星,川西刚开始并不想去,后来推脱不开才去了一趟。迎接他的,是令人眼花缭乱的贵宾接待,美女表演传统节目,甚至专门竖起了一座三星与东芝友好纪念碑。
在一连串的迷魂阵下,韩国人提出请川西刚看看他们的半导体工厂,然后在川西刚勉强参观后,顺势提出参观东芝大分工厂的要求——这可是当时世界上最先进的芯片厂。作为回礼,川西刚答应了。
日本人很快就会体会到这件事的苦果。
参观后不久,三星就把大分厂的生产部长给挖走了,然后建了一个与大分厂几乎一模一样的工厂。
比建厂更要紧的,是挖人。
80年代末,日本经济泡沫破灭,一大帮在东芝工作过的员工被韩国人挖走,光是资深的顾问,就有57人。日本NHK电视台后来还找到当事人问待遇,得知:

报酬是在日本拿到的3倍左右。

除此之外,每名日本顾问还给一套四室一厅公寓,配备秘书、高级轿车和司机。——没办法,人给的实在是太多了。
就这样,90年代初,在日本半导体企业内外交困之下,三星踩着日本企业的尸体大踏步前进。1992年,三星第一次超过日本企业,成为世界最大的内存厂商,此后保持领先至今。
问题是,为什么日本半导体企业被美国整垮,三星却安然无恙?
一方面,有日本企业作为前车之鉴,三星未雨绸缪,对美国白宫、议会、贸易部门展开了强大的游说攻势,强调如果自己倒下,日本企业将再次垄断市场,对美国不利。
另一方面,1998年亚洲金融危机,韩国迫于压力对外开放金融市场,结果美国资本如饿狼般涌入,大肆低价买入韩国企业股权,而三星,正是它们的首要目标。今天的三星,其实早已成为韩国人经营的美资企业。

 

 交了“投名状”的三星,背后有华尔街的资本站台,不必再担心引起美国制裁,从此开始在半导体领域高歌猛进。伴随着电子工业的崛起,韩国人完成产业升级,步入发达国家之列。

2021年全球半导体企业排行榜,前三名韩国占了两个(三星和海力士),放眼全球,芯片先进制程领域,三星唯一的对手,只剩下台湾的台积电。

决定台湾命运的“早餐会议”
台湾半导体的故事,要从一次不起眼的早餐说起。
1974年2月的一天,台北市南阳街一家不起眼的豆浆店内,七个人坐在一起边吃边聊。
这几个人个个大有来头,其中有台湾地区“经济部长”孙运睿,电信总局局长方贤齐,美国无线电公司微波研究室主任潘文渊等。这样几个人坐在一起,显然不是专程来吃早餐的,他们一边喝豆浆,一边讨论台湾经济未来的发展方向。
1913年出生的山东人孙运璿,毕业于哈工大电机工程系,后来随国民党败退至台湾,一直做到台湾省“经济部”部长,一度被视为小蒋的接班人。六七十年代, 他曾主持台湾“十大建设计划”,完成了台湾的基础设施建设。
50年代以来,台湾经济先是从劳动密集型的出口替代,逐渐发展到资本密集型的出口扩张,70年代已经达到了一定高度,但接下来怎么走?谁都没有了主意。
在美国工作多年的潘文渊对美国高科技产业的发展比较了解,他提出,半导体是电子工业最核心的部分,应该作为台湾产业升级的发展方向。这一建议得到了其他人的认同,兴奋之下几个人又讨论了从美国引进技术的可行性。
这次只花了300台币的“早餐会议”,无意中决定了台湾经济的未来。
不久后,台湾工研院成立电子工业研究所,思路上大致是:台湾当局出资,公司体制运营,高薪聘请专业人才。从美国无线电公司购买的专利技术,成为台湾芯片技术的最初来源。
1976年,大陆地区尚未脱离“文革”的混乱,台湾第一座3英寸晶圆厂拔地而起。他们进步神速,生产用于电子钟表的芯片,不到一年的时间良率便超过了美国无线电公司,以至于对方提出要买下这家工厂。
这种收购或合资的套路并不少见,对于后发经济体来说,自家产业很容易被外资通过这种方式控制。所幸,工研院深知这家工厂肩负带动台湾产业升级的使命,拒绝了美国人的提议,这才保住了台湾芯片产业的火种。
1982年,慧眼识英的孙运璿从美国德州仪器又挖来一名资深专家,后来成为台湾半导体产业发展的关键人物。此人回到台湾后创建了一家名为“台湾积体电路”的半导体公司,今天,人们通常称它为——台积电。那位专家,就是被称为“台湾半导体教父”的张忠谋。
今天回头看的话,台湾当局是颇具前瞻目光的,1991年发布的《十大新兴工业发展策略及措施》,把半导体、消费电子、精密机械等十大新兴工业列为发展目标,电子产业逐渐成为台湾经济的最大支柱,延续至今。
90年代经济巅峰时,台湾一个省GDP竟然能占到大陆的43.8%!当时高雄的纺织女工月薪都能超过1万元人民币,而上海的职工月工资只有几百元,两岸差距十倍不止。
对台湾来说,其财富的最大来源不是金融、地产,而是实打实的工业。这里面最重要的,又是以半导体为核心的电子信息工业,包括了台积电、联电、联发科、日月光、鸿海、和硕等一批世界级厂家。
2018年华为被制裁,“卡脖子”中最关键的一环,便是无法获得台积电生产的先进制程芯片。实际上,台积电不仅卡着华为的脖子,也卡着全球半导体工业的脖子,2021年,台湾半导体产业占据了全世界64%的产能,很多消费电子、汽车品牌巨头,都依赖于台湾的芯片供应。
两岸一旦爆发冲突,不只中国大陆,全球的电子产业供应链都将被严重扰乱,给我们带来更多的外部压力。也正因此,台积电被一些人视为台湾的“护岛神山”。
大陆目前最先进的的中芯国际,刚刚完成14nm制程的量产,而台积电已经在进军3nm制程,差距至少在五年以上。2021年,台积电的营收超出中芯的10倍,短时间内,我们还无法看到大陆半导体企业对台积电实现赶超。
回顾半导体产业发展史,前三十年是美帝独领风骚,七十年代后,日本、韩国和台湾地区承接来自硅谷的技术外溢和转移,吸引本国在美国的人才回流,抓住了千载难逢的机遇。
但很遗憾,由于种种原因,我们错失了半导体产业发展早期的黄金时期,当我们终于开始抬头看世界时,发现半导体产业的山头,已经插满红旗。

蹉跎岁月

1973年,当日本半导体工业完成起步,即将对美国半导体巨头发起冲击的前夜,一支来自中国的考察团悄然而至。考察团13人都是半导体领域的技术专家,带队的是中科院半导体研究所副所长王守武。
王守武是中国半导体技术的奠基人之一,1950年他放弃美国普渡大学教职回国,1958年领导建立了中国最早的晶体管工厂,中科院109厂。这样看的话,中国半导体产业距离世界潮流,似乎并不遥远。
但很可惜,没有输在科研起跑线上的中国半导体,却在产业化竞赛中被越甩越远。
王守武带团访日时,中日正值蜜月期,当时出国不易,大家都很珍惜这次机会,一趟下来,把东芝、日立、NEC、富士通等看了个遍。这一看,发现差距不小,日本已经开始采用3英寸晶圆生产线,而国内还在为小规模集成电路的质量问题头疼。
但让考察团意外的是,NEC表示愿意将全套先进的3英寸芯片生产线转让给中国——如果引进,这条产线将比台湾地区领先3年,比韩国领先5年。NEC开出的报价是5000万美元。
回国后,王守武向时任国防科工委副主任的钱学森汇报情况,钱学森无奈地表示有心无力。除了缺钱,更麻烦的是当时的政治大环境,引进国外技术,当时被批判为“洋奴主义”,是“事关国格”的路线问题。
从NEC引进技术一事,只好不了了之,而这,只是那个特殊年代的一个极小缩影。
当大洋彼岸的仙童、英特尔开始在硅谷崭露头角、新技术层出不穷时,中国正经历一轮又一轮的“运动”:王守武被停职批斗,备受诬蔑和诽谤;麻省理工博士毕业的谢希德,被整成走资派后,每天工作是扫厕所;半导体物理学奖黄昆,被隔离审查,发配到北京郊区劳动改造……
风雨如晦,鸡鸣不已。
50-70年代,国内动乱不安,国外封锁压制,中国半导体产业彷徨前行,举步维艰,错失了产业早期的黄金三十年。1977年,全国有600多家半导体工厂,但它们一年的生产总量加起来,只有日本一家工厂月产量的十分之一。 
钱学森晚年曾感慨:“60年代我们全力投入两弹一星,我们得到很多;70年代我们没有搞半导体,我们为此失去很多。”
从更深层次来看,传统制造业遵循的是物理定律,而半导体产业背后,是可怕的摩尔定律,是指数型增长——这意味着,在沿袭自苏联的计划经济体制下,没有优胜劣汰的市场竞争,根本不可能跟得上前沿技术的飞速发展。
改革开放后,打开国门后我们才猛然发现,中国半导体产业已被远远抛在后面。更严重的是,除了少数业内专家,绝大部分人尚未意识到差距之大,追赶难度之高。1977年,人民大会堂召开科技界座谈会,*问王守武:

“你们一定要把大规模集成电路搞上去,一年行吗?”
80年代后,国家部委先后组织三大“战役”,对半导体技术发起攻关。比如1995年启动的“909”工程,投资100亿人民币,电子工业部部长胡启立亲自挂帅,万众瞩目,不可谓不重视。
但很遗憾,投建的上海华虹厂遇到了行业低潮期,而国内当时又没有人了解三星越亏越要投的“反周期”理论,因此华虹备受争议,最终还是没能赶上摩尔定律狂飙突进的脚步。
这场当时几乎让人绝望的追赶,直到新世纪到来之际,才终于再次迎来转机。
今天我们在媒体上所熟知的芯片公司,几乎都成立于21世纪的第一个十年:2000年中芯国际,2001年展讯通信,2003年中星微,2004年华为海思……这些明星企业,汇聚了大批80年代出国、在美国芯片公司工作多年的科技人才。
新的血液,新的机制,终于开始给中国半导体产业注入足够的活力。
事实证明,在任何高科技领域,只要给予合适的大环境,中国人做的绝不会比别人差。在芯片设计和封装领域,华为海思、长电科技等飞速崛起,仅仅用了十余年时间,就进入了领域内第一梯队。
但在最复杂也最艰难的芯片制造领域,中国半导体产业经历了血雨腥风,至今仍面临着卡脖子危机。回首过去风雨之路的崎岖坎坷,如今仍泰山压顶般的压力,总让我想起鲍勃迪伦那首成名作《blow‘ in the wind》:

How many roads must a man walk downBefore you call him a man.

造芯片比造原子弹还难吗?
2020年4月,华为手机业务达到顶峰,历史上首次超越三星,登上全球第一的宝座。从崛起到登顶,华为用了十多年才走到这一步。
然而,令人唏嘘的是,仅仅一年后,被美国制裁的华为迅速跌落,荣耀被迫卖掉,高端的P系列由于缺少芯片,无法继续延续。十年奋战,就这样一夜间付诸流水。
华为在全球攻城略地的背后,隐藏着一条门槛极高的高科技食物链。
在这条食物链上,华为处在台积电下方,没有台积电生产的芯片,华为的手机业务只好停摆;而台积电又处在荷兰ASML(阿斯麦尔)的下方,没有ASML提供的光刻机,台积电就无法制造最先进的芯片。制造7nm以下芯片所需的EUV光刻机,1亿欧元一台,排队买还不一定买到。 
那么阿斯麦尔呢,它是否已处在这条高科技产业链的顶点?仍然不是,阿斯麦尔是系统集成厂商,它的上方,还有一群隐形冠军,比如其中有一家,叫蔡司。
这又是一家百年老店。
1945年,二战接近尾声之际,从诺曼底登陆的美军势如破竹,纳粹德国败局已定。这时候,巴顿将军率领第三集团军,不顾破坏《雅尔塔协定》的风险,闯入划给苏联的东德区域,但他们的目标不是军事要地,而是位于耶拿的蔡司公司。
蔡司公司创建于1846年,在二战期间为德军生产望远镜、测距仪、航空摄像机等。当战争快结束时,美国和苏联都已未雨绸缪,开始考虑抢夺德国的科技资源,而蔡司公司,被美国列为接收的首要目标。
美军占领耶拿后,本来打算用600辆卡车把整个蔡司公司整个搬走,没想到苏军推进太过迅速,美国人措手不及之下,只能将蔡司最核心的100多名员工运到西德,在那里建了个新蔡司。
如今,制造7nm以下芯片所需的EUV光刻机,需要用到极度精密的光学透镜,目前全世界只有蔡司能够做到,别无二家。这种独门绝技背后,是蔡司在光学领域长达百年的技术积淀。
除了蔡司提供的光学镜头,ASML还要用到来自美国Cymer公司提供的光源系统,整合来自世界各国的顶尖工艺,完全可以说,光刻机是西方现代工业体系的集大成,是人类工业革命以来制造业皇冠上的明珠。
任正非曾感叹:我们国家修桥、修路、修房子,已经习惯了只要砸钱就行,但芯片只砸钱不行,还要砸数学家、物理学家、化学家……

尾声

1993年,俄罗斯总理切尔诺梅尔金来到位于乌克兰的黑海造船厂,讨论将“瓦良格”号航母继续建造完成并移交给俄罗斯的可行性,旁边的造船厂厂长马卡洛夫忍不住插嘴说“瓦良格号已经不可能完成了”,然后他继续说出了那段著名的话:

“如果想要瓦良格号完工,我需要苏联、党中央、国家计划委员会和工业军事委员会,以及6000多个相关专业和8000多家配套厂家,总之,需要一个伟大的国家才能完成,可是这个国家已经不存在了。”

如果放在芯片上,这段话或许可以这样说:
要发展世界一流的半导体产业,需要目光长远、有战略性规划的政府支持,需要鼓励创新、容许失败的土壤,需要不断拓展前沿的一流高校、研究所,需要能够耐住寂寞沉下心搞研发的企业家,还需要年薪百万的顶级工程师。
一言以蔽之,这是真正的国家综合实力的较量,是一场国家层面的隐形战争,而它的输赢,直接关系着一个国家子民的福祉。
“因为你的投票,你的孙辈都会做着高薪工作。” 这是前几天,美国民主党参议员查克舒默在鼓动国会通过“芯片与科学法案”时喊出的口号。这项法案,美国计划投入2800亿美元,可以说是美国有史以来最重大的法案之一。
推出芯片法案也好,封禁EDA、禁售光刻机也好,美国人这套组合拳目的很简单:牢牢把控产业的顶端,保证自己的国民能够继续喝着咖啡拿高薪,顺便将中国钉死在产业链的低端。化用刘慈欣《三体》中的一句话就是:
发展自己,锁死对手。
回望整个半导体产业发展史,小小芯片,奠定了人类信息时代的基石,也改写了一些国家地区的命运,有的搭上时代列车,步入发达经济体之列,也有超级大国因而落寞衰颓。
对我们这个国家、这个民族来说,虽然道阻且长,弯路走了不少,但突破重重封锁,实现产业自主,其意义比之当年两弹一星,也不遑多让。我们的未来,也将由这场事关国运的终极竞赛来给出答案。

CuAssembler 开源 | 探求 NVIDIA GPU 极限性能的利器

在通常的 CUDA 编程中,用户主要通过 CUDA C/C++ 或 python 语言实现 CUDA 功能的调用。在 NVIDIA 对 CUDA C 的官方支持工具链中,CUDA 设备端代码从 CUDA C 转换为 NVVM IR(类似 LLVM IR),再生成对应架构的 ptx,最后由 ptxas 编译生成最终设备端的机器码。这其中CUDA C、NVVM IR 和 PTX 都有相对完整的工具和文档支持。但对于最终生成的设备上运行的汇编(称为Streaming ASSembly,SASS)及其机器码,却没有提供类似 gcc 的 gas 和 llvm 的 llvm-mc 这种汇编工具。这就意味着最终代码生成质量将更多取决于编译器,而用户对底层汇编缺乏直接控制手段,从而限制功能使用和性能发挥。CuAssembler 是个 CUDA SASS 汇编器,主要是把 nvdisasm 生成的反汇编输出汇编成可加载执行的 cubin 文件,实现对最终汇编机器码的绝对控制,弥补当前 NV 没有官方汇编器支持的不足。同类工具里有asfermi,KeplerAs,maxas,turingas等针对特定 NV 架构的汇编工具。与这些工具相比,CuAssembler 对多架构的支持更完整(当前主要有 SM60/SM61/SM70/SM75/SM80/SM86),指令编码支持和扩展也更容易。同时,CuAssembler 能更好地嵌入现有 NVIDIA 官方工具链,可以实现大部分代码的功能继承自原有编译流程,从而支持更多 CUDA feature。CuAssembler 的主要使用场景有两类。一是性能敏感算子(如 conv、gemm 等)的汇编级的极致优化。由于汇编是设备运行的最终代码,使用汇编可以支持最细粒度的性能调优。第二个场景是通过一些特定汇编代码实现 microbenchmarking,测试指令集及微架构的性能信息,从而为程序性能优化提供参考。CuAssembler 之前版本的简要介绍可参考:https://zhuanlan.zhihu.com/p/348234642更早的专栏文章有介绍实现原理:

  • 需求及指导思想: https://zhuanlan.zhihu.com/p/279341172
  • 自动指令编码: https://zhuanlan.zhihu.com/p/296908633
  • 指令编码的特殊处理: https://zhuanlan.zhihu.com/p/314410214

这里发布的版本在原版基础上有多个更新,主要有:1. 补充完善了对 SM60/61/70/75/80/86 的支持,特别是解决了 Ampere 架构中的一些隐藏问题。2. 补充了多个脚本文件,日常使用更方便快捷。3. 内部实现做了大量优化,大大提升了可靠性和易用性。4. 改进了编码的实现方式,能覆盖更多隐藏编码和提高可靠性。
安装、配置与使用

一、安装说明

新版 CuAssembler 仓库地址为:https://github.com/openppl-public/CuAssembler ,原版仓库后面也会尽量同步更新。用户可以自由选择 git clone 或是下载 zip 文件包等方式。

CuAssembler 是个 python 包,所以依赖 python(推荐 python3.8+)。除 python 自带的标准库外,还使用了两个第三方库:sympy, pyelftools都可以通过 pip 或 conda 下载安装。另外,因为需要用到 cuda 的反汇编和 dump 功能,需要 CUDA SDK 中的 cuobjdump 和 nvdisasm 两个可执行文件(不需要完整的 CUDA SDK,只需这两个可执行文件即可,建议加到系统 PATH)。由于 cuobjdump 和 nvdisasm 可能有一些隐藏 bug 导致部分功能受限(主要是一些指令编码处理问题),建议使用最新版本的 CUDA SDK。CuAssembler 的目录结构如下:

 

 

 CuAssembler 目录结构?  bin : bin 目录主要是一些常用功能的脚本,方便用户更快捷的调用。建议加入系统 PATH。

  • ? CuAsm : CuAsm 目录包括所有的模块文件,想在 python 中 import CuAsm(也包括运行 bin 中的 python 脚本),需要将其拷贝到系统 PATH 或是已知的 PYTHONPATH 下,也可以把其父目录添加到 PYTHONPATH中(推荐)。
  • TestData : 这个目录主要是一些测试 cu 或 cubin 文件,由于版本变化,部分格式可能有出入,仅供参考。
  • ? Tests : 一些调用 CuAsm 模块功能的简单脚本,仅供开发者参考。
  • ? Tools : Tools 目录下包括一个 cuasm 文件的 vscode 语法高亮插件,也可以用来高亮 cuobjdump 得到的 sass。它很简陋,也没有加入 vscode 的官方市场,也没有安装文件,可以复制到 vscode 的插件目录直接使用。建议配色使用 vscode 的 Dark+(default Dark)。

 

 

 VSCode 语法高亮效果

二、配置说明

Linux 用户可以直接修改.bashrc, 设置相应的环境变量(注意修改为对应路径):

  export PATH=${PATH}:~/works/CuAssembler/bin
  export PYTHONPATH=${PYTHOPATH}:~/works/CuAssembler/

bin 目录的脚本基本都有详细的介绍文档。Linux 下可以直接运行./cuasm.py 、./dsass.py等 python 文件(前提是能被/usr/bin/env找到 python 路径,否则需要用python *.py方式运行), 但是我通常会创建相应的符号链接并设为可执行:

ln -s cuasm.py cuasm
chmod a+x cuasm

这样就可以直接用cuasm/dsass/hcubin/hnvcc作为命令了(不用加后缀也不用python cuasm.py这种繁琐的方式)。windows 下虽然可以配置 py 运行方式,但并不方便。所以我为这几个 py 脚本都创建了 bat 批处理文件,方便运行:

@echo off
python "%~dp0\cuasm.py" %*

其中的%~dp0 表示当前 bat 所在目录,如果需要把 bat 复制到其他目录,把它替换为绝对或相对路径即可。配置完成后,cuasm t.cubin就可以将t.cubin反汇编为t.cuasmcuasm t.cuasm -o t2.cubin 就可以将其汇编为相应的二进制文件。脚本都有相应的介绍和命令行参数文档,可以自行参考。这里简单介绍一下各个脚本的功能:? cuasm : 将二进制 cubin 文件反汇编为用户可编辑的 cuasm 文本文件,或是将用户修改后的 cuasm 文件汇编为 cubin 文件,从而在CUDA 程序中调用运行。这是 CuAssembler 提供的主要功能。? hcubin : hcubin 主要是解决 Ampere 架构的 SM80、SM86 等反汇编文本不显示默认Cache-policy descriptor的问题。它会修改相应 bit 强制所有 desc 都必须显示。具体介绍见后文。? dsass : NV 提供的官方反汇编工具中,cuobjdump/nvdisasm 都不会显示 control code 相关信息,dsass 可以提供一个方便的接口把原汇编和 control code 都完整的显示出来。dsass既可以接受cubin文件和包含cubin的二进制文件输入,也可以输入从 cuobjdump -sass *.exe 得到的sass文本文件。dsass输入cubin文件时会自动检测是否需要hack desc,其他输入格式则会保留原编码。? hnvcc : hnvcc是一个hack版的nvcc,它可以在环境变量(HNVCC_OP)的控制下打断或更改nvcc中涉及cubin的编译流程。不设置HNVCC_OP时,hnvcc将直接调用nvcc;在HNVCC_OP=dump时,它会把ptxas的输出cubin保存下来,供用户反汇编和修改;而HNVCC_OP=hack时,它会用对应的cubin文件替换ptxas原来的输出。这样即使是使用runtime api,也可以直接替换cubin,无需再专门写一个driver api的版本去运行cubin文件。? makefile : 这不是脚本,而是个makefile模板。它提供了一个简单的cu文件编译、dump以及hack的逻辑。make d2h就可以dump相应cubin并反汇编为cuasm,make hack就能用修改的cuasm汇编后替换对应的cubin,并生成最终的可执行文件。
三、使用说明这里介绍 linux 下最方便快捷地使用 CuAssembler 的方法:

  1. 1. 在工程目录下创建一个cu文件,例如cudatest.cu
  2. 2. 将CuAssembler/bin/makefile复制到工程目录,将其中的BASENAME修改为前面的文件名(这里是BASENAME=cudatest)。将ARCH变量设置为要编译的SM版本,这里假设是ARCH=sm_75。如果需要处理额外的include或link文件,修改对应的$INCLUDE 和 $LINK 变量即可。
  3. 3. 运行make d2h,其中 d2h 表示 "dump to hack"。这会生成3个新文件:
  • dump.cudatest.sm_75.cubin : 由原始输入 cudatest.cu 编译生成的cubin文件.
  • dump.cudatest.sm_75.cuasm : 原始cubin的反汇编文件.
  • hack.cudatest.sm_75.cuasm : 原始反汇编dump.cudatest.sm_75.cuasm的副本,方便用户修改.
  1. 1. 根据用户需求修改hack.cudatest.sm_75.cuasm
  2. 2. 运行make hack。这会将用户修改后的 hack.cudatest.sm_75.cuasm 汇编为 hack.cudatest.sm_75.cubin,用它替换原编译链中的cudatest.sm_75.cubin,最终生成可执行文件cudatest
  3. 3. 得到最终可执行文件cudatest后,就可以按原来的方式运行,例如./cudatest

整个过程与通常开发方式比较接近,也不用专门写driver api相关接口去调用 cubin。
一些提示:

  1. 1. 由于 CuAssembler 当前的功能限制,cuasm所有的接口需要继承自原cubin文件,所以需要修改kernel参数、全局变量、constant memory配置时,需要重新make d2h生成新的cuasm并在此基础上重新修改。不过由于cuasm是文本格式,用户可以使用一些版本控制软件尽量减少重复修改的部分。2. 这个方式比较适合独立的CUDA程序,如果需要修改大型程序(比如多个cu文件)的一部分,nvcc的参数和编译链条会较为复杂,存在较多风险;

功能介绍更新

一、Ampere Cache Policy UR 问题

新版发布的一个主要更新是改善了对 Ampere 架构(SM80/SM86 等)的支持。Ampere 除了新加一些指令外,总体与 Turing 非常接近,但存在一些隐藏问题,就是 Cache Policy UR 不显示的问题。对于 Ampere 架构,用 NVCC 编译的 cubin 中,如果有 load、store 类指令(比如 LDG/STG/ATOMG/RED/LDGSTS 等等),通常会使用default cache policy(通常位于c[0x0][0x118])。它会在程序早期被载入某对UR(64bit,比如UR[4:5]),其他非默认cache policy需要相应的显式初始化。例如,我们使用 ptx 的createpolicy指令创建 policy 并用于load指令中:

.reg .b64 %cp<3>;
createpolicy.fractional.L2::evict_last.L2::evict_unchanged.b64 %cp0, 0.75;
createpolicy.fractional.L2::evict_last.L2::evict_unchanged.b64 %cp1, 0.5;
createpolicy.fractional.L2::evict_last.L2::evict_unchanged.b64 %cp2, 0.25;

ld.global.b32 %r0, [%rd0];
ld.global.L2::cache_hint.b32 %r1, [%rd0+1024], %cp0;
ld.global.L2::cache_hint.b32 %r2, [%rd0+2048], %cp1;
ld.global.L2::cache_hint.b32 %r3, [%rd0+3072], %cp2;

st.global.v4.b32  [%rd1], {%r0, %r1, %r2, %r3};

用ptxas编译后,汇编中UR[4:5]是默认cache policy,UR[6:7]/UR[8:9]/UR[10:11]是自定义的非默认cache policy:

code for sm_86
        Function : _Z5ktestPmPi
.headerflags    @"EF_CUDA_SM86 EF_CUDA_PTX_SM(EF_CUDA_SM86)"
/*0000*/                   IMAD.MOV.U32 R1, RZ, RZ, c[0x0][0x28] ;  /* 0x00000a00ff017624 */
                                                                    /* 0x000fc400078e00ff */
/*0010*/                   S2R R2, SR_TID.X ;                       /* 0x0000000000027919 */
                                                                    /* 0x000e220000002100 */
/*0020*/                   ULDC.64 UR4, c[0x0][0x118] ;             /* 0x0000460000047ab9 */
                                                                    /* 0x000fe40000000a00 */
/*0030*/                   UMOV UR6, 0x0 ;                          /* 0x0000000000067882 */
                                                                    /* 0x000fe40000000000 */
/*0040*/                   UMOV UR7, 0x14b00000 ;                   /* 0x14b0000000077882 */
                                                                    /* 0x000fe40000000000 */
/*0050*/                   UMOV UR8, 0x0 ;                          /* 0x0000000000087882 */
                                                                    /* 0x000fe40000000000 */
/*0060*/                   UMOV UR9, 0x14700000 ;                   /* 0x1470000000097882 */
                                                                    /* 0x000fe40000000000 */
/*0070*/                   UMOV UR10, 0x0 ;                         /* 0x00000000000a7882 */
                                                                    /* 0x000fc40000000000 */
/*0080*/                   UMOV UR11, 0x14300000 ;                  /* 0x14300000000b7882 */
                                                                    /* 0x000fe20000000000 */
/*0090*/                   LEA R2, P0, R2, c[0x0][0x160], 0x2 ;     /* 0x0000580002027a11 */
                                                                    /* 0x001fca00078010ff */
/*00a0*/                   IMAD.X R3, RZ, RZ, c[0x0][0x164], P0 ;   /* 0x00005900ff037624 */
                                                                    /* 0x000fca00000e06ff */
/*00b0*/                   LDG.E R8, [R2.64] ;                      /* 0x0000000402087981 */
                                                                    /* 0x000ea8000c1e1900 */
/*00c0*/                   LDG.E R9, desc[UR6][R2.64+0x400] ;       /* 0x0004000602097981 */
                                                                    /* 0x000ea8200c1e1900 */
/*00d0*/                   LDG.E R10, desc[UR8][R2.64+0x800] ;      /* 0x00080008020a7981 */
                                                                    /* 0x000ea8200c1e1900 */
/*00e0*/                   LDG.E R11, desc[UR10][R2.64+0xc00] ;     /* 0x000c000a020b7981 */
                                                                    /* 0x000ea2200c1e1900 */
...

这里可以发现/*00b0*/LDG.E R8, [R2.64] ; 其实应该是LDG.E R8, desc[UR4][R2.64] ;,由于UR[4:5]是默认policy,没有显示在汇编文本里。但是,默认policy的存放位置是不固定的,可能是UR[4:5], 也可能是其他。这导致显示的汇编文本无法完全反映原始语义信息,相当于经过反汇编、汇编后,部分编码信息丢失了。这种编码信息的丢失也会导致无法正确修改NVCC输出的cubin文件。经过观察,我发现设置102 bit(也就是LDG第二行的0x000ea8200...中的2)可以强制让nvdisasm显示所有的desc。其他指令看起来不用这个bit,所以也无害。因此,cubin转为cuasm时,CuAssembler会自动把所有指令的这个bit置1,从而使编码信息完备。修改所有指令编码也会带来新的问题。因为CuAssembler所有的编码规则不是手工填的,而是根据输入解方程算到的。额外的无用bit会导致每个操作数或modifier的权重计算错误。因此,CuAssembler/bin中的脚本hcubin可以专门用来修复Ampere架构中使用了desc的指令编码。dsass工具在dump sass时,如果输入是cubin文件,也会自动完成这个编码hack。当然,对于多数用户来说,编码变化是汇编器内部机制问题,不用过多关心。只要汇编文本能显示完备的汇编语义信息就足够了。

二、Reuse bit 编码问题

在Scott Gray最开始介绍Maxwell Control Codes的文章中,reuse bit是4bit,每个对应一个操作数slot。后来的多数文章也继承了这个观点,CuAssembler也用了显式的[R-R-]这种方式来标记对应的slot。但是根据对Turing及Ampere大量反汇编及编码对应关系的观察,这里面存在两个问题:有些指令没有显示 Reuse,但仍可设置 Reuse bit:典型的比如LDG,BAR,TEX等指令。它会在原Reuse bit中写入一些额外信息,具体信息含义不明。第四个操作数的 Reuse,不对应 Reuse 的第 4 位:在Ampere之前,没有发现有4个GPR操作数且能reuse的指令,所有的reuse都只用了3个bit。但到Ampere中,HMMA.SP支持4个GPR输入,且都可以reuse。而第4个操作数的reuse并没有设置第4个bit,而是在原编码的中间位置。因此,原先的reuse应该就只有3个bit,第4位其实一直未使用。因此,在新版的CuAssembler中,reuse不再作为单独的control code域显示,而是作为通常的modifier处理,由程序自动确认编码。当然,这也导致前述LDG、BAR、TEX等指令在通常reuse bit上写的信息会丢失。这需要在反汇编时就提取相应信息,并将其写入反汇编文本中,这样才能在汇编时恢复。由于这些bit含义暂不明,这个暂不支持。

三、改进内部构建机制和错误检查

由于缺乏完备的编码规则,CuAssembler不可避免的会遇到很多编码问题,如无法识别的modifier,不能编码的组合等。我们改进了相关描述文件,可以更容易发现编码问题。如对指令BRA_II, 它的内部信息如下(参考CuAssembler/CuAsm/InsAsmRepos/DefaultInsAsmRepos.sm_75.txt):

'BRA_II':CuInsAssembler("", {"InsKey" : 'BRA_II', 
  "InsRepos" : [([7, -16], ['0_BRA', '0_NegAddrOffset'], 1088033237653166188516112711),
([8, 48], ['0_BRA'], 1083197534374707946695199047),
([8, 368], ['0_BRA'], 1083197534374709321084733767),
([0, 1296], ['0_BRA'], 1083197534374713306814351687),
([7, 10960], ['0_BRA', '0_DIV'], 1083197534374754821968263495),
([7, 48], ['0_BRA', '0_CONV'], 1083197534374707959580096839),
([9, 1008], ['0_BRA', '0_U'], 1083197534374712074158774599)], 
  "InsModiSet" : {'0_BRA': 0, '0_NegAddrOffset': 1, '0_DIV': 2, '0_CONV': 3, '0_U': 4}, 
  "ValMatrix" : Matrix([
[1, 1, 0, 0, 0, 7,   -16],
[1, 0, 0, 0, 0, 8,    48],
[1, 0, 0, 0, 0, 8,   368],
[1, 0, 0, 0, 0, 0,  1296],
[1, 0, 1, 0, 0, 7, 10960],
[1, 0, 0, 1, 0, 7,    48],
[1, 0, 0, 0, 1, 9,  1008]]), 
  "PSol" : Matrix([
[ 0x38000000000000000000947], # 0_BRA
[   0x400000000000000000000], # 0_NegAddrOffset
[               0x200000000], # 0_DIV
[               0x300000000], # 0_CONV
[               0x100000000], # 0_U
[                    0x1000], # Pred
[               0x100000000], # V1
]), 
  "PSolFac" : 1, 
  "ValNullMat" : None, 
  "InsRecords" : [(0x0000e0, 0x000000000383fffffffffff000007947, "BRA 0xe0;"),
(0x000150, 0x00000000038000000000003000008947, "@!P0 BRA 0x190 ;"),
(0x000270, 0x00000000038000000000017000008947, "@!P0 BRA 0x3f0 ;"),
(0x0002b0, 0x00000000038000000000051000000947, "@P0 BRA 0x7d0 ;"),
(0x000e60, 0x000000000380000000002ad200007947, "BRA.DIV 0x3940 ;"),
(0x0016f0, 0x00000000038000000000003300007947, "BRA.CONV 0x1730 ;"),
(0x005f00, 0x0000000003800000000003f100009947, "@!P1 BRA.U 0x6300 ;"),
], 
  "ErrRecords" : {-0x14000000000000000000000000000000 : (0x003770, 0x14000000038000000000009000002947, "@P2 BRA 0x3810 ;"),
},   "Rhs" : Matrix([
[0x383fffffffffff000007947],
[0x38000000000003000008947],
[0x38000000000017000008947],
[0x38000000000051000000947],
[0x380000000002ad200007947],
[0x38000000000003300007947],
[0x3800000000003f100009947],
]), 
  "Arch" : CuSMVersion(75) }

其中ValNullMat为空,表明这个是完备的系数矩阵(可能有未见过的modifier,但所有操作数组合都可编码)。ErrRecords里面记录了所有已知编码与预期不一致的指令,例如这里BRA就在通常reuse bit的位置中写入了0x14,这是普通指令的编码系统没有的。如果发现一些指令的编码存疑,检查这些信息有利于快速判断是否是规则问题。另外,对于用户手写汇编时常见的typo问题,增加了更友好的出错提示,例如SM75中错把IADD3写成了IADD,则会提示:

File c.cuasm:3126 :
    [B0-----:R-:W-:Y:S04]         /*0d10*/                   IADD R1, R1, 0x8, RZ ;
Error when assembling instruction "[B0-----:R-:W-:Y:S04] IADD R1, R1, 0x8, RZ ;":
    Unknown InsKey(IADD_R_R_II_R) in Repos!
Available InsKeys:
    IADD3_R_R_II_R
    IMAD_R_R_II_R
    IADD3_R_P_R_II_R
    IMAD_R_R_II_R_P
    IMAD_R_P_R_II_R

这可以更好的帮助用户快速找到错误并修正。输入了未知modifier或不可编码组合时,也会列出当前所有已知组合,方便用户查找原因,等等。

结语

面对 CUDA 底层这种封闭生态,做汇编器其实是有一些事倍功半的。毕竟 CUDA 的中上层工具和生态已经相当完备,功能和性能已经能满足多数需求。

所以很多时候我们也没太追求完备性,只是希望能多一个入口,多一种选择。或者说,做汇编器不是目的,而是手段。

后面基于汇编器开发一些更有实际意义的功能。

三维重建/SLAM/点云/相机标定/深度估计/缺陷检测

人工智能渗入到越来越多领域,以计算机视觉为主的相关应用更是呈现爆发性增长,国内外资本对AI视觉兴趣只增不减,自动驾驶、工业视觉、AR/VR、测量测绘、移动机器人等领域涌现了大量独角兽公司,呈现了以3D感知、融合定位、重建、测距等多个应用场景的产品。

 

 (标定类基础模块)

 

 (定位感知高级模块)

 

 高性能计算

想象一下,新药的研制时间从数年缩短至数天。高性能计算机 (HPC) 通过模拟、建模和分析,可以轻松解决这类以及更多其他科学难题。高性能计算系统帮助人们解决世界上最棘手的难题,引领人类走向“第四次工业革命”。高性能计算系统现已广泛用于:

  • 寻找全新的药物化合物并测试已知药物组合,从而更好地治疗不同种类的癌症和其他疾病
  • 模拟分子动力学以开发新材料,如防弹纤维织物
  • 提前预测重大天气变化,使受影响的地区做好准备

超级计算机代表着高性能计算系统最尖端的水平。随着处理能力的不断演进,超级计算机的认定标准也会不断提升。单个超级计算集群可能包含数万个处理器,使用全球最昂贵且最强大的系统,成本高达 1 亿美元。

高性能计算的工作原理

在高性能计算中,处理信息的两种主要方式为:
串行处理,由中央处理器 (CPU) 完成。每个 CPU 核心通常每次只能处理一个任务。CPU 对于运行各种功能而言至关重要,如操作系统和基本应用程序(如文字处理、办公生产力工具等)。

 

 并行处理,可利用多个 CPU 或图形处理器 (GPU) 完成。GPU 最初是专为图形处理而设计的。它可在数据矩阵(如屏幕像素)中同时执行多种算术运算。同时在多个数据平面上工作的能力使 GPU 非常适合在机器学习 (ML) 应用任务中进行并行处理,如识别视频中的物体。

 

 突破超级计算的极限需要不同的系统架构。大多数高性能计算系统通过超高带宽将多个处理器和内存模块互连并聚合,从而实现并行处理。一些高性能计算系统将 CPU 和 GPU 结合在一起,被称为异构计算。计算机计算能力的度量单位被称为“FLOPS”(每秒浮点运算次数)。截至 2019 年初,现有的高端超级计算机可以执行 143.5 千万亿次 FLOPS (143 × 1015)。此类超级计算机被称为千万亿次级,可以执行超过千万亿次 FLOPS。相比之下,高端游戏台式机的速度要慢 1,000,000 倍以上,可执行约 200 千兆次 FLOPS (1 × 109)。超级计算在处理和吞吐量方面的重大突破很快将会实现超级计算的下一个重大级别——百亿亿次级,该级别的速度比千万亿次级约快 1,000 倍。这意味着百亿亿次级超级计算机每秒将能够执行 1018(或者 10 亿 x 10 亿)次运算。

 

 “FLOPS”是对理论处理速度的描述,实现该速度需要连续向处理器传输数据。因此,系统设计必须考虑到数据吞吐量这一因素。系统内存以及处理节点之间的互连会影响数据传输到处理器的速度。

 

 

 为了实现1百亿亿次级 FLOPS 的下一级超级计算机处理性能,大概需要 5,000,000 个台式机。*假定每个台式机具备 200 千兆次 FLOPS 的能力。

术语知识

  • 高性能计算 (HPC):一个广义上的强大计算系统,其范围涵盖简单计算机(如 1 个 CPU + 8 个 GPU),乃至世界一流的超级计算机
  • 超级计算机:最先进的高性能计算机,以不断提高的性能标准为依据
  • 异构计算:优化串行 (CPU) 和并行 (GPU) 处理能力的高性能计算架构
  • 内存:在高性能计算系统中为实现快速访问而存储数据的地方
  • 互连:可令处理节点互相通信的系统层;在超级计算机中存在多个级别的互连
  • 千万亿次级:为达到每秒执行千万亿次 (1015) 运算而设计的超级计算机
  • 百亿亿次级:为达到每秒执行百亿亿次 (1018) 运算而设计的超级计算机

     

     高性能计算是什么?高性能计算是指将多个计算节点组织起来,通过网络连接在一起,进行协同工作,组成一台性能更强大的计算机,通常指具有极快运算速度、极大存储容量、极高通信带宽的一类计算机。高性能计算能够让整个计算机集群为同一个任务工作,以更快的速度来解决一个复杂问题。一台高性能计算上往往执行一个任务(或者有限的几个任务)。全部的计算机资源都被倾注到同一个任务中。为了解决同一个问题,集群的不同计算机之间要有非常好的沟通能力。高性能计算机是计算机和网络的结合。假设说互联网从外部将分立的计算机连接在一起,那么集群则是将网络内部化,让网络成为系统内部不同计算机的沟通桥梁。首先创造性发明集群的是有“高性能计算之父”之称的 Seymour Cray。在 1960 年代,可以进行高性能运算的仅仅是经过特别设计的、昂贵的大型机。这些大型机需要复杂的回路以实现高运算频率,所以其设计和生产周期都非常长。Seymour Cray 提出并行是提高计算机性能的有效方式。1964 年,Seymour Cray 研制的 CDC 6600 问世,他将多个普通的处理器连接起来,并使得这些处理器协同工作。政府和科研部门开始采购这样的新型的高性能计算机,以代替原有的大型机。高性能计算机为登月计划等大型科研项目做出了不可磨灭的贡献,开启了高性能计算技术和产业多年的持续发展与繁荣。高性能计算近 60 年的演变路线可简单地分为 2 个阶段:Cray 时代和多计算机时代。(1)Cray 时代。从 20 世纪 60—90 年代初期的 30 年被称为“Cray 时代”,以单一内存向量机的技术革新为主导,Cray 定义和引领了前 30 年的高性能计算市场。第一个30 年研制以“顶天”为主,仅服务于国家战略部门。(2)多计算机时代。从 20 世纪 90年代迄今的后 30 年被称为“多计算机时代”,由于微处理器的出现,以及大量工业标准硬件的普及,以大规模互连多个通用乃至商用的计算部件的可扩展系统结构的技术创新主导了迄今为止的高性能计算发展。后 30 年的高性能计算机在满足国家战略应用对性能巅峰需求的同时,“立地”成为发展的主要目标,市场驱动、高性能计算应用普及成为第二阶段的显著特点。

  •  

     高性能计算为什么重要?

    高性能计算是计算机科学与工程的“皇冠”。高性能计算是计算机技术的源头之一。互联网产业依赖的数据中心的核心技术,诸如 Hadoop 等并行编程工具和 RDMA 等远程通信技术大多脱胎于此。因此,高性能计算机被视为计算机科学与工程的“皇冠”。各国均频繁从国家层面启动研制计划。在中国多次上榜全球高性能计算 TOP500 后,美国自2015 年起将多所中国高性能计算相关机构或企业列入实体清单,包括国防科大、无锡江南计算技术研究所、曙光、申威等。而我国高性能计算整体实力和美国相比仍然有较大差距。因此,发展自主可控的高性能计算至关重要。高性能计算的核心能力是 64 位双精度浮点运算能力。高性能计算是一种通用算力,其设计目标是提供完备、复杂的计算能力,在高精度计算能力更强。业界广泛用于衡量高性能计算性能的 Linpack 测试,测试的是高性能计算的“双精度浮点运算能力”,即 64位浮点数字的计算(FP64),这是一种高精度的数值计算。在以二进制所表示数字精度中,还有单精度(32 位,FP32)、半精度(16 位,FP16)以及整数类型(如 INT8、INT4)等。数字位数越高,意味着人们可以在更大范围内的数值内体现两个数值的变化,从而实现更精确计算。高性能计算在底层芯片性能要求上高于普通的数据中心和智算中心。算力中心有多种,大致可分为数据中心、高性能计算中心、智算中心等,而它们都可以用云的形式来提供服务。以实现人工智能需求为例,推理、训练和模拟为 AI 的三类主要任务。在此维度上,芯片的应用上限由其底层构造所决定,即使采用软件优化也无法再提升。从芯片层面来看,如果底层芯片采用的是 CPU+专用 AI 芯片,那么其只能完成 AI 推理和训练任务,而无法完成模拟。因为 AI 芯片无法实现双精度浮点运算,双精度浮点运算大量涉及线性代数方程求解,而自然界的很多问题,包括科学问题、社会问题等,最后都可转化为线性代数方程求解问题。
  •  

     

     

     高性能计算的体系结构设计和软件同样重要。芯片是高性能计算的重要组成部分,但不是高性能计算技术的全部。高性能计算不是简单的 CPU 堆砌,体系结构设计、高速互联网络、并行文件系统、储存列阵等方面如果有所欠缺,即使堆再多的 CPU,高性能计算性能也无法提高。随着计算能力的增强、应用课题规模和复杂度的增加,高性能计算机对并行文件系统等性能要求越来越高。高性能计算的技术溢出效益非常明显。由于服务器可以平滑地采用高性能计算的互联技术、CPU 技术、操作系统技术和并行软件设计等技术,在高性能计算方面的积累能够自然地溢出到服务器产业。高性能计算主要应用于哪些场景?高性能计算适用于需要并行运算的任务,应用场景持续拓展。高性能计算主要应用场景分为两类,一类是飞行器设计、核模拟实验、星云模拟、解密码等数值模拟场景,一类是大数据分析、统计和人工智能等数据分析场景。由于飞行器等工程设计中很多情况无法实测,只能进行计算模拟,因此美国对出口高性能计算十分谨慎。高性能计算应用正在从过去的高精尖向更广更宽的方向发展。随着高性能计算的发展,尤其是使用成本的不断下降,其应用领域也从具有国家战略意义的核武器研制、信息安全、石油勘探等科学计算领域向更广泛的国民经济主战场快速扩张,比如制药、基因测序、动漫渲染、数据挖掘、金融分析以及互联网服务等等。从 2021 年 11 月中国高性能计算机 TOP100中的行业应用领域 Linpack 性能份额来看,算力服务、高性能计算中心、人工智能、科学计算等领域是高性能计算的主要用户,互联网大数据特别是 AI 领域增长强劲。高性能计算的市场空间有多大?

     

     

     

     十四五和新基建驱动高性能计算进入快速增长期。2021 年 3 月,我国“十四五规划”中明确提出,要“加快构建全国一体化大数据中心体系,强化算力统筹智能调度,建设若干国家枢纽节点和大数据中心集群,建设 E 级和 10E 级超级计算中心。”根据规划,合肥、兰州、厦门、太原等地多地都将陆续建立高性能计算中心。2022 年中国整体高性能计算市场规模将超 400 亿元。除政府规划外,阿里、腾讯等多家互联网巨头均积极布局高性能计算建设。以腾讯为例,其于 2020 年 6 月正式开工的长三角人工智能高性能计算中心投资超 450 亿元,建成后将承担各种大规模 AI 算法计算、机器学习、图像处理、科学计算和工程计算任务。此外,金融机构、运营商等均在积极部署自己的高性能计算。根据观研天下预测,2022 年中国高性能计算行业总体市场规模将超 400 亿元,2021-2025 年 CAGR 为 13%左右。高性能计算市场竞争格局稳定联想、曙光、浪潮市占率分列前三。从中国高性能计算 TOP100 中主要公司系统个数统计来看,2002 年之前,TOP100 主要是国外的 HP、IBM 为主,后期以中国的联想、曙光和浪潮为主。中科曙光在 1998 年完成 863 项目“曙光 2000”可扩展机群体系结构的超级服务器,2001 年完成“曙光 3000”超级服务器后,从 2005 年开始,市场竞争开始有突出表现,曙光 2010-2019 年连续 10 年按装机台数市场份额第一,2019 年占到接近 40%。浪潮在 2012 年完成“863 计划”容错服务器项目后,2014 年开始有明显起色。联想公司通过 2014 年对 IBM 公司 X86 HPC 产品线的并购,市场份额异军突起,到 2021年已实现 TOP100 装机台数份额第一。而联想、浪潮、曙光中,只有曙光拥有从芯片等硬件到软件系统的国产自主知识产权。“东数西算”工程落地有望进一步促进西部地区发展高性能计算中心。2022 年 2月,国家发改委批复同意在京津冀、长三角、粤港澳大湾区、成渝、内蒙古、贵州、甘肃、宁夏等 8 地启动建设国家算力枢纽节点,并规划了 10 个国家数据中心集群。至此,全国一体化大数据中心体系完成总体布局设计,代表着“东数西算”工程正式全面启动。西部有风力发电、光伏发电,能源丰富,而且年平均气温比较低,十分适合计算中心的生存,而高性能计算业务对实时通讯的需求不高,未来高性能计算中心有望成为优化算力布局的重要载体。

吉利收购阿斯顿·马丁

9月30日,浙江吉利控股集团有限公司(下称“吉利控股”)宣布,其已完成对英国超豪华性能品牌阿斯顿·马丁·拉贡达国际控股(下称“阿斯顿·马丁”)7.6%股份的收购。

2009年12月23日,美国福特汽车和吉利控股集团同时宣布,双方已就福特向吉利出售旗下沃尔沃公司事宜达成初步协议,所有重要商业条款达成一致。2010年3月28日,吉利控股与福特汽车在瑞典哥德堡正式签署协议,以18亿美元正式收购沃尔沃100%股权,沃尔沃成为吉利控股旗下品牌。2017年8月4日,吉利控股集团、吉利汽车集团与沃尔沃汽车签订合资协议,领克汽车成为三方合资品牌,合资公司正式成立。

 

 

 宝腾成立于1983年,是DRB-HICOM旗下全资子公司,也是马来西亚最大的汽车公司。英国LOTUS成立于1948年,是世界著名的跑车和赛车生产商,曾译名莲花跑车,总部位于英国海瑟尔(Hethel)。1996年,宝腾集团成功收购英国LOTUS(路特斯集团)国际公司,后者于2011年宣布进入中国市场,并发布中文官方名称“路特斯”。2017年6月23日,吉利控股集团与马来西亚DRB-HICOM集团签署最终协议,收购DRB-HICOM旗下宝腾汽车(PROTON)49.9%的股份以及豪华跑车品牌路特斯(Lotus)51%的股份。

 

 宝腾汽车之后就到了戴姆勒集团(2022年2月,戴姆勒集团更名为梅赛德斯-奔驰集团)。2018年2月,吉利控股通过旗下海外企业主体以90亿美元巨额收购戴姆勒约9.69%,成为戴姆勒集团最大单一股东。2019年3月,吉利控股集团和戴姆勒集团宣布,双方将成立合资公司,在全球范围内联合运营和推动smart品牌转型,合资公司总部设在中国,双方各持股50%。

吉利控股曾两次向阿斯顿·马丁抛出橄榄枝,但阿斯顿·马丁却不为所动。2020年1月11日,英国《金融时报》援引知情人士报道,吉利控股正谋求投资阿斯顿·马丁,并已与这家公司的投资者和管理层进行了会谈,但结果无疾而终。此后,阿斯顿·马丁发布声明,阿斯顿·马丁与加拿大亿万富翁劳伦斯?斯特罗尔(Lawrence Stroll)达成协议,以劳伦斯?斯特罗尔为首的财团将以1.82亿英镑(约16.58亿元人民币)收购其16.7%的股份,而随后由Stroll等大股东支持的配股将进一步筹集3.18亿英镑(约28.97亿元人民币)。

今年7月中旬,阿斯顿·马丁披露将引入新的战略投资者的同时,业内亦传出由吉利和意大利InvestIndustrial共同组成的阿特拉斯财团,向这家英国跑车制造商投资13亿英镑的消息。不过,阿斯顿·马丁董事会拒绝了这一提议,最终持有迈凯轮股份的沙特阿拉伯公共投资基金成为新的主要投资者和第二大股东,后者将将向阿斯顿·马丁投资7800万英镑,并额外配股5.75亿英镑,累计筹集6.538亿英镑。

业内人士认为,吉利入股阿斯顿·马丁有其合理性,但双方在经营理念上或存在的巨大差异,让吉利两次尝试均未果,吉利的想法或是让阿斯顿·马丁参与大众市场的竞争,但后者则坚持自己的高端定位。至于吉利控股为何又能够完成对阿斯顿·马丁7.6%的股份收购,目前并未有具体的探讨流程。

资料显示,阿斯顿·马丁是知名跑车制造商,成立于1913年3月,创始人是莱昂内尔·马丁(Lionel Martin)和罗伯特·班福特(Robert Banford),最初公司名为班福特和马丁有限公司(Bamford & Martin Ltd.)。1947年,英国企业家大卫·布朗(David Brown)收购了阿斯顿·马丁公司。1994年,大卫·布朗将阿斯顿·马丁出售给美国福特汽车,成为福特旗下全资子公司。2007年,福特售出其大部分股权予一个由英国赛车公司Prodrive所领导的财团。2012年12月,意大利私募股权基金Investindustrial宣布投资1.5亿英镑,收购阿斯顿·马丁37.5%的股权。2018年10月,阿斯顿·马丁在伦敦证券交易所挂牌上市。

自伦敦证券交易所挂牌上市后,阿斯顿·马丁的日子并不好过,股价一度下跌90%,更是因为销量不佳,甚至陷入亏损泥潭,不得不发行债券筹集资金。

 

 

 受中国疫情封锁、俄乌局势升级和成本飙升的影响,阿斯顿马丁的供应链和物流问题变得更加严重,导致其亏损扩大。据财报显示,2022年上半年阿斯顿·马丁全球销量2676辆,税前亏损2.854亿英镑,而一年前这一金额为9,070万英镑。董事会认为,拟议的融资将进一步支持公司重新确认的中期目标,即到2024-2025年实现全球约1万辆、约20亿英镑销售收入的目标,以及约5亿英镑调整后的EBITDA,并从2024年开始产生正的自由现金流。

 

参考文献链接

http://beibaijia.com/11601.html

https://mp.weixin.qq.com/s/p6s30acNhjPxDoB74u0iRw

https://mp.weixin.qq.com/s/ousE3sYtDd7zhV-_AtvA7w

https://mp.weixin.qq.com/s/QEuF5TJwtsrb-y__M9N2Cw

https://mp.weixin.qq.com/s/nzoxFkt3jOEgflBbpZ3U7g

https://mp.weixin.qq.com/s/Rxix7QErJTbjMu7kweiHrg

 

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表