浪潮之巅NVIDIA

吴军老师的《浪潮之巅》写作较早,暂未收录NVIDIA这家公司。写一篇网文汇总,回顾这位2023年彪炳IT史的弄潮儿,勇立潮头者,少不了值得我们品味学习的地方。

从"刺头"到巨头

  • linux之父linus,因英伟达多年来拒绝对GPU内核驱动开源,对英伟达竖过🖕🏻:英伟达是我们遇到过最糟糕的公司。So F**K you,Nvidia!
    • 22年应黑客攻击,才开源Linux驱动源码(黑客也为了解除特定显卡的挖矿限制)

2012: Linus Torvalds: “Fuck Nvidia”

  • 微软,英特尔,AMD,三星,高通都跟英伟达对簿过公堂,但「皮衣刀客」就是:不怕得罪客户,不怕战斗!

  • 给加密货币提供矿机,推出专门面向“挖矿”定制的专业矿卡。为了挖矿生产的,游戏玩家们没办法用,直接舍弃了图形处理功能

    • 以前吹以太坊有价值,加密货币矿机有未来。但以太坊从POW(工作量证明)转向了POS(权益证明),话锋一转,又说加密货币无法给社会带来啥价值
    • 矿机的几年背负了很多骂名,但也让公司撑到了AI新世代的周期
  • 一路推动GPU走向主流市场,坚持搭建生态,形成了如今高耸的护城河和垄断式的市场占有率,不得不佩服管理层近10几年的远见卓识

命运的齿轮

老黄如今已是硅谷科技巨头中现任最久的CEO,敏锐又灵活,精明无比

成长履历

  • 祖籍浙江,1963年生于台湾,9岁后跟哥哥一道去美国,并就此定居在美(老爹出差去了一次美国后就执意让孩子过去发展),脱离父母在美生活了2年,陌生的差环境,锻炼了黄仁勋强大的环境适应能力

  • 当时住在肯塔基州的亲戚家,上着一所乡村寄宿学校,学校有很多问题学生,他学会了爬墙,偷吃东西和抽烟

  • AMD掌舵人 苏姿丰(3岁移民美国,比老黄小6岁)要尊称黄仁勋为表舅,其姥爷是老黄的亲大舅

    半导体台湾家族帮
  • 1978年,15岁的老黄获得美国乒乓球男子双打季军,在竞争不强的美国乒乓球界,老黄有很大机会成为乒乓球运动员,代表美国队参加88年奥运会

    说说有趣的走向,大神钱学森生于清朝,二战末期被授予上校军衔,他和冯.卡门,冯.布劳恩都是美国现代火箭和导弹技术奠基人,若在漫威世界线中,钱上校应该和美国队长是战友,和霍华德史塔克是同事,同是神盾局创始人之一

  • 81年(18岁),黄仁勋进入波特兰州立大学就读,86~89年进入斯坦福攻读电子工程硕士学位,在斯坦福,接触到了更先进的计算机图形技术,对于图形处理器的研究个更加深入

  • 毕业后,黄仁勋加入AMD负责图形处理器及相关产品,两年后,黄仁勋离开AMD,加入了LSI Logic,担任图形处理器设计师。在LSI Logic,他又积累了大量关于图形处理器的实践经验

创立NVIDIA

93年,30岁的黄仁勋与Chris Malachowsky和Curtis Priem共同创立了NVIDIA,专注于图形处理器的研发和制造。公司名称NVIDIA来源于拉丁语“envidea”,意为“视觉”,此时是游戏发展「街机转家用机」的浪潮。他们早期的明星产品是Geforce 256,是dx7时代「千禧年前后」的市场精品

老黄立志将公司做到计算机图形领域的老大哥,可现实是残酷的。起初,黄与团队耗时两年打造了第一款显卡产品NV1,由于不兼容竞争对手3DFX的Glide 3D标准,销售表现十分惨淡,最终不得不停止销售。好在这款产品吸引了视频游戏制造商Sega的注意,并与之建立了合作。但经过一年的开发,英伟达的团队意识到其设计的架构是错误策略,因为微软即将宣布基于反向纹理映射和三角形的Windows 95 Directx3D,这代表着如果英伟达完成了Sega的游戏机,公司将会创造出与Windows不相容的产品,sigh!

想要拯救奄奄一息的英伟达,必须破釜沉舟。黄仁勋将英伟达的战略从游戏主机转向PC市场,并从游戏设计公司晶体动力挖来David Kirk(也就是后来的CUDA之父)博士担任首席科学家,组织了一个庞大的研发团队。

CPU vs GPU

cpu对比gpu的图形渲染机制对比

通用vs专用

  • CPU就像一个学习渊博的教授,什么都精通都能做,但任务的一项项做,比较慢
  • GPU就像一堆小学生,对于特定的简单运算任务,人多力量大,所以在大量并行计算上,GPU完胜

GPU是做协同处理,叫co-processor,因为GPU是处理大量并行计算,所以它的设计上并没花很多心血做程序的控制,依然作为协处理器存在PC体系结构中

GPU由于历史原因,是为了视频游戏而产生的,在三维游戏中常常出现的一类操作是对数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。

CUDA时代的CPU和GPU差异可以参阅[6],在CUDA的概念中,CPU和GPU分属Host和Device,二者之间通过PCIe总线连接,可以在CUDA编程中使用cudaMemcpy函数进行CPU与GPU之间的数据传递

核数差异

CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;

GPU核数远超CPU,被成为众核(Nvidia Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(初始GPU在浮点运算上一直弱于CPU)

CPU和GPU的架构差异

总结来看

CPU GPU
包含 较少的多功能核心 很多功能单一的核心
内存消耗
专注于 低延迟 高通量
擅长 处理复杂的串行指令 处理并行的简单指令

成本+专业演进

两个小芯片比一个大芯片便宜

不断膨胀臃肿的CPU,在成本,功耗,还有灵活性上,远不如一个小CPU加上一个GPU的组合搭配

专业之道,惟精惟一

CPU和GPU很多东西是不一样的,领域专注使其性能,架构灵活性,使得其可随着行业生态及编程API等不断去修改,去提升

独立GPU的催化剂-DirectX

微软看到越来越多人开始用PC,而PC除了办公外,还有游戏功能,但PC游戏的3D效果没有办法跟PS2对比。Windows上尚缺乏统一的图形和音频接口,开发者难以为应用程序和游戏提供一致的用户体验。

微软那时想到一个办法,就是把大量图形的功能,才CPU中移植出来放到GPU上,通过这种方法让GPU的性能强起来,推动行业发展,反过来去巩固他自己在PC端的地位。与此战略打配合的就是DirectX:一种图形音频API接口。

DirectX把市面上各种各样的硬件统一起来,提供了一个标准API,让开发者们能更好地调用这些GPU的硬件性能,而不必耗费大量精力在兼容性上。

DirectX,它的早期版本图标是一个核弹(内部代号曼哈顿计划),寓意也很明显,从日本人手里把图形方面的制高点拿下来。把市场、标准甚至以后的前沿技术,都攥在自己手里

DirectX核弹图标

刚诞生时,还是很原始的一个东西,没什么人去用它,那时候整个民用行业关于图形应用方面的话语权,都在日本游戏厂商手里。

  • 97年当时还有三个标准:OpenGL、DirectX、3DFX公司的Glide。
  • 直到Directx6(1998)才借助32位渲染和整合的纹理压缩算法打败对手,成为主流

在微软的带动下,英伟达开始与下游厂商纷纷结成伙伴,最终活了下来。

DX7:催化剂的临界点

Directx在DX7版本的时候(1999)的设计,决定了现代意义上的GPU的诞生。

DX7之前的GPU,专做填充颜色,图形从顶点到多边形的的生成,这种运算全都由CPU来做。微软在DX7-API里,把顶点计算、多边形生成的很大一部分工作卸载下来了(Transform & Lighting:T&L,坐标转换和光源),给了GPU,使得GPU有更大的作用。

T&L技术能力效果展示

  • 3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现
  • 卸载前,CPU计算出顶点坐标之后,还要去生成很多三角形,然后再做一些着色指令发给GPU,GPU再去做这些东西,之前坐标转换和灯光都需要CPU来计算
  • 卸载后,CPU只要告诉GPU坐标点在哪里,剩下的交给GPU自己去做就可好了。在刚开始分离的时候,效率没有太大的提升

随着特效越来越多,往CPU中塞入更多浮点加速单元,跟上DX新版本的要求,已经越来越难了,这时候GPU的重要性就凸显出来了

  • 换句话说,通过一个很复杂,性能很强的CPU去渲染3D图像,在成本和技术上实现都有困难
  • GPU就是能从一个硬件上支持T&L的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”

DX7时代开始,英伟达和微软深度绑定。之前英伟达喜欢支持一些自有或不够主流的标准,经常产品失败,而后微软每一次API的大改动,老黄都是第一时间去支持的。

深度绑定微软,Geforce256就是DX7的划时代产品。

Geforce256所采用的核心技术除了硬件T&L之外,还有立方环境材质贴图、顶点混合,纹理压缩和凹凸映射贴图,双重纹理四像素、256位渲染引擎等诸多先进技术,在性能大幅提升同时,3D游戏的画面得到了质的提升

DX8:CPU和GPU彻底分离

DX8(2000)也发生了一件关键的事情:微软在GPU API中引入了法线贴图,及可编程着色器

DX8 Pixel Shader和Vertex Shader技术带来的动态光影效果展示:变色龙和不同角度的人脸

这两个功能都需要你在处理器的执行单元额外加入晶体管,芯片面积会变大。

  • 比如说1000个流处理器,每个周期可以做两个操作,它跑在1GHz频率下,就能跑出2TFlops的浮点运算能力
  • 今天7纳米的时代,把1000个流处理器集成到一个CPU里,也还是一个非常占面积,很费力的事情,而这只是独立GPU的入门水平

可编程着色器(每一个渲染管线),开发者控制力增强。走到这一步,CPU就没办法承受了,因为CPU本就为了追求单核性能和灵活性,再去加入专用单元,CPU会越来越臃肿。

首款DX8显卡:GeForce 3 Ti,由于DX8渲染模式的改变,GeForce 3相对于DX7的GeForce 2/256有了天翻地覆的变化,一半以上的模块需重新设计,更多的晶体管融入,你也可映射为现在显卡的浮点计算能力(3D图形处理),在两家显卡厂商的DX8产品里,ATI架构更出色,NV家的性能更强(晶体管投放到顶点管线上)

DX8后,行业已默认CPU没办法再完全承担3D图形渲染任务,如果你想玩游戏,或者想从事一些3D工作的话,GPU是必须的

大幅增加CPU性能继续负担图形渲染的思路,也是有的,即PS3上的用的处理器

  • 这颗处理器非常奇葩,完全沿袭了日本人过去十几年对图形行业的理解,就是一个CPU加入足够多的浮点单元和加速单元,可实现各种各样的计算功能,他们当时号称能“模拟地球”,可惜在那个年代没有走通
  • 这样的芯片太复杂了,开发难度太大,处理器很臃肿,成本也太高,最后的表现不尽如人意。

DX的后续嬗变

从DX7到DX8,GPU出具成型。DX9C(2004,DX9首发于2002),是一个非常好的标准,吹响高精度渲染时代的号角。但实际上,当时游戏主要依靠美工,并没有支持很多特效,主要原因是,GPU灵活性不是很强,本质上还没有跳脱暴力的“纹理填充”机器的范畴。

统一渲染Milestone

DX10(2006),微软又一次推动了行业,引入了“统一渲染”

渲染一个画面,本质是两个步骤

  1. 绘制出顶点,顶点用来绘制三角形,然后绘制每个模型 : 顶点单元
  2. 给这些顶点绘制出来的部分上色,或者做一些渲染:像素渲染

分开来看,本来是一种很合理的方案,让专门的单元做专门的事情,但在游戏渲染过程中,你顶点单元10个,渲染单元5个的硬件预设,可能对编程的灵活应用带来复杂度。

微软对两者做了一个合并,这两个东西变成了一个东西,我就既可以计算顶点,也可以去填充像素,这就是我们说的统一渲染。

统一渲染后不同着色单元不会再出现空闲浪费

DX10随07年Vista发布,NVIDIA在支持DX10方面可谓占了先机,早在06年就已经推出了硬件支持DX10的下一代显示核心–G80。其不再区分像素和顶点着色单元,而是由流处理器单元按照负载动态的执行包括像素和顶点在内的各种着色指令,不同的着色单元不会再出现空闲浪费资源的情况。

DX10主要改进内容

命运齿轮的再次转动

微软尝试统一渲染的时候(DX10),英伟达是被排除在体系之外的(之前两家在打官司),但后来,英伟达非常迅速地倒向统一渲染,完成了架构上的革新(架构推倒重来,彻底地自我革命)

  • 英伟达把它的流处理器拆成了很独立,很标准的单元,方便控制和调度,每个流处理器都可以独立运行
  • AMD的处理器是很长的一个大组,一次读取大量指令,缺点是每5个或4个流处理被绑定在一起,不能独立运行
    • ATI是用超长指令集的架构(SIMD-单指令多数据流),每4个矢量+1个标量做一个流处理器组,配合当时微软做的统一渲染的一种试水,没有彻底为统一渲染架构从头做一个设计,效率还是很有问题
    • 只有一个指令数据输入口,5个单元同进退,现实中很多时候,每个周期可能只是过来一个标量和或两个矢量指令,相当于流处理器中很多单元是在闲置状态(设计与现实不完全匹配)
    • 后来被收购合并更是无法及时对技术架构做一个彻底的变革

DX10引导了CUDA

而如果英伟达没有把自己的GPU变成统一渲染的标量化,CUDA就是一个空谈

  • 本身GPU编程已经是一个很困难的东西了,更何况是给超长指令集的GPU编程。
  • 给GPU编程,让其资源利用最大化,计算资源需要都标准化,不能是特殊配比

AMD和NVIDIA在DX10时代显卡架构差异

流处理器是1D标量处理器,它一次只能计算像素和顶点 4个数据中的一个,这样效率不会很低吗?当然不是,因为随着游戏的发展,GPU要处理的指令已经不是4D这种常规数据流了,进入DX10时代后,Z缓冲区(1D)或纹理存取(2D)等非4D指令所占比重越来越多,此时传统的Shader单元在执行此类指令时效率会降至1/2甚至1/4

G80 1D标量处理器执行各种类型指令时效率都能达到100%,这也就是NVIDIA对于GPU架构大换血的主要目的,G80的这种架构被称为MIMD(多指令多数据流),其特色就是执行效率非常高,但也不是没缺点,理论运算能力偏低,晶体管消耗比较大,当然由于对手产品实力不行,这些缺点在很长一段时间内都没有被发现。而且NVIDIA的1D标量流处理器还可以异步工作在超高频率下,一般是GPU核心频率的两倍,由此大幅提升了渲染能力,这一技术ATI到2010年时还没实现。

G80的MIMD标量架构需要占用额外的晶体管数,在流处理器和理论运算能力方面比较吃亏,但却能保证超高的执行效率;而R600的SIMD超标量架构可以用较少的晶体管数获得很多的流处理器数量和理论运算能力,但执行效率方面却不如人意,G80的架构显然要比R600改进更为彻底。

左N家右A家DX10小模块架构

  • MIMD(单指令多数据流)的超标量架构可以执行任意组合形式的混合指令
  • SIMD架构非常依赖于将离散指令重新打包组合的算法和效率,赢了晶体管成本,输了执行效率

真正的大佬:Microsoft

甲方大金主

半导体行业,尤其数字芯片这块,有一句话叫“硬件软件不分家“,微软是PC生态主导,它的API承担了桥梁的作用,自然而然,它能去收集很多游戏开发商及软件生态行业的需求。

还有一些研究院,有很多前沿的探索,在研究的过程中,微软觉得下一代可能要做某些改进,于是反馈给GPU厂商。

也正是因为如此,微软在GPU行业发生变革的时候,它走在前面,或者说它引领了变革

  • DX重大版本更新,GPU必采用全新架构
    • 决定显卡市场胜败的关键是在体系架构方面,这是双方设计实力的体现
    • 市场验证每次都是新架构产品胜出,不变则败
  • CUDA真正能起来,一方面是英伟达顶层的远见卓识,一方面是因为微软背后推动了GPU架构的重大变革
  • 微软要搞光追,老黄第一个站出来说:”好,我来当马前卒“,老黄很卖力地去推微软要推进的东西,相比之下,AMD,英特尔对这一块没那么感兴趣

土地与作物

GPU本质上跟软件是高度耦合的,这也导致了它跟API版本,跟API厂商关系必须非常密切,微软在图形领域掌握了标准话语权

GPU作物要长得好,它就必须听土地的话,而土地就是微软。

英伟达干过很多荒唐的事,但还是一步步走到了今天,能够成功,有很大的因素就是他当微软的跟屁虫,这样能保证其在生态上、在标准上不会被人拉到后面去

与各位大佬Battle

半导体五方大佬

曾几何时,半导体市场有4大玩家:英特尔,AMD,ATI以及英伟达,还有一个超级大甲方金主:微软

英特尔CPU的市场太大了,处于非常舒服的位置,基本上的态度就是:市场上有啥新东西,你们先搞着,到时候组装到我的主板里面就行了,后来Intel采用了CPU+GPU的集成显卡策略,让ATI和英伟达去竞争,英特尔坐收渔利。

集成显卡一般分为独立显存集成显卡,内存划分集成显卡及混合式集成显卡三类

两个CPU巨头盯着两个GPU新星,明着暗着拉帮结派,再加上,微软,几方就开始搞事情

微软为了进军游戏主机业务,与任天堂和索尼展开直接竞争,就找到了英伟达,让他成为当时还是秘密项目的Xbox(2002)的GPU供应商。(此时正是DX8的年代)

  • 52亿美金的合同,定金就直接给了2亿美元,当时英伟达全年销售才5亿美元,相当于包养了
  • 氪金玩家下场,初代配置奇高(堪比高配电脑),进而错过了与PS2(2000)的先发时机,盖茨的一号项目,不成功就成仁,亏钱市场也要有个响(卖一台Xbox,就要亏126美元)
    • 奔腾3处理器+英伟达的显卡+DVD光驱+…
    • 装载英伟达GPU-Geforce 3的Xbox比单买Geforce 3还要便宜30美金(299 vs 329)
  • 这就动了让供应商英伟达降价的念头,一口回绝法庭见,微软扭头转向英伟达的对手ATI,英伟达一年股价蒸发90%
    • 以5.07亿美元身家排在第12位,后一年老黄个人财富缩水10倍,直接从”亿万“回到了”千万“富翁

意识到错误,忍辱负重

与微软的交恶,直接导致新推出的Geforce FX因为和微软的标准不兼容,而被对手ATI推出的Radeon 9700打得一败涂地,更糟糕的是,GeForce FX还出现运行温度过高的问题

挣钱嘛,跪着很常见

  • 服了软,在2003年2月6号与微软共同宣布结束法庭仲裁程序,同意与微软合作降低Xbox的未来成本
  • 另一手,争取到新金主,为下一代游戏主机PS3提供显示芯片
  • 主板芯片领域也开始和Intel芯片组兼容(原来首发跟老东家AMD),04年还跟Intel专利交叉许可

N斗而不破

2004第三季度,在独立显卡市场,ATI市占率59%,而英伟达只有37%。此时在DX9时代区间(02~04)

AMD收购ATI,天上掉馅饼

时代的转机:当时AMD很焦虑,CPU争不过Intel,也认同GPU的发展会是未来重要的策略,于是一跺脚,买下市面上最好的GPU供应商。

最开始,AMD想买的是英伟达,但黄仁勋坚持要做合并后公司的CEO,遂告吹,你可以说老黄开出一个无法接受的条件拒绝合并

2006年7月,AMD宣布,以54亿美元收购ATI,市场认为,一个强大的巨头即将诞生,但老黄不这么看,他笃定,AMD吞下AIT之际必然有一段时间的消化和整合期,而英伟达需要抓住这个时期,重新找到市场优势。

这简直是天上掉馅饼一样的礼物,ATI基本上已经认输了,我们成了世界上唯一一家独立的图形芯片公司 – 老黄的采访原话

果不其然,整合让AMD伤筋动骨,颓势一直持续到2016年,消化不良了10年时间

  • 沉重的债务负担,几乎用光了公司的账面现金,负债表到2010年才降下来,一度让AMD濒临破产
    • AMD收购ATI之前,ATI花了相当的时间在当时的显卡领域”买买买“,专利和技术在ATI的收购过程中产生了大量的溢价(其实老牌显卡商的技术已落后),也就是说,ATI花大价钱把自己吃成了个大胖子,然后这个大胖子又被AMD花更大的价钱吃掉
    • AMD穷得连晶圆厂也卖了
  • 整合拖慢了节奏,资金链紧张拖累了研发进度,暂时没有产生1+1>2的效果,双线作战的时候力不从心
    • DX10(2006),统一渲染,ATI面临收购买落地架构变革

Intel vs Nvidia二英扭打起来

英伟达不满足只做Intel的芯片组集成显卡供应商,开始进攻Intel的蛋糕

2007年,英伟达退出Tesla系列,用于大规模的并联电脑运算,GPU计算解决方案,涵盖到个人电脑以及大规模服务器集群,大客户是Apple。

08年的苹果MacBook除了CPU用Intel的Core 2 Duo,剩下的直接替换成英伟达的Tesla架构支持的集成控制器GeForce 9400MG,而不是英特尔芯片组的南北桥。

Intel保守坠落

Intel铆足了劲想自研芯片,CPU市占率80%,图形处理器市场靠集成芯片组,也能吃50%

  • 这么大的公司,这么多人才,可就是搞不定自研GPU芯片平台
  • 那就决裂,提前脱钩,北桥芯片不跟你合作了,之前的交叉专利授权不再适用新一代芯片组
    • 一个月后,老黄反手就将Intel诉上,指Intel违反合同,实为阻碍技术
  • 打了两年官司,Intel累了,双方和解,和解条件是,Intel要在5年内向英伟达支付15亿美元的专利使用费

市值对比

谁曾想,英特尔市值当前竟是英伟达的九分之一,直奔1:10而去(2024.2.6)

  • 英特尔市值:$1808亿
  • 英伟达:$17125亿
  • AMD:$2815亿,原来PC时代的万年老二,现今也力压Intel 1千亿市值
xychart-beta horizontal
    title "半导体公司市值"
    x-axis [INTEL, AMD, NVIDIA]
    y-axis "2024.2.6市值 (in $亿)" 1000 --> 20000
    bar [1808, 2815, 17125]

移动市场battle三星高通

移动SOC

英伟达推出的独立移动芯片Tegra,也就是AP(Application Processor)处理器,含CPU+GPU,但还缺基带芯片整合和市场

半道转行到手机芯片,看似功能强大,功耗发热问题有致命伤

英伟达之前一直是苹果Mac电脑系列的GPU提供商,手机芯片这样一块大蛋糕,大家都想要,但苹果说:你们都别想了,我自研

苹果芯片找三星来代工,同时合作了高通的基带芯片

苹果不满意,可能也跟遭遇过显卡门事件有关,何况Jobs这么吹毛求疵一人

然后就将三星,高通告上法庭,侵犯英伟达图形技术专利7项。三星亦反诉其推出的平板电脑侵犯三星专利8项。官司一打就是8年,却在16年无赔偿庭外和解(AI和挖矿已经开始,大时代画卷已经展开,何必在法庭瞪眼)

一路走来的经营感悟

因为专注研发最领先的GPU技术,将巨头们都甩在身后

但也意识到:产品过于单一、过于依赖性金主甲方的商业模式终究是不安全的

  • 大客户永远想砍价

  • 永远想将技术变为自有

反脆弱化生存

在老黄的感悟中,生存非常重要,现今为王,作为一名CEO,要么赚钱,要么省钱,要么融资。不专注于这三件事就是CEO不务正业。

活下去 $\rightarrow$ 站着挣

  • 紧跟标准。图形领域的的标准话语权掌握在微软手里,当好微软的跟屁虫

  • 英伟达的文化,就是“快速试错,快速迭代”。如果一个东西对了,它就死命加注;如果错了,就当做没发生过。比如大概十年前,3D显示很火。英伟达不遗余力宣传3D 显示,推出配套软件,配套眼镜。但后来发现这个东西没推广开,英伟达很快翻篇了。

  • GTC发布会什么热点都蹭,量子计算、元宇宙,挖矿等等

    老黄看到了大家都在做智能手机,他也想去做智能手机的soc,所以它有一个图睿的产品线,但一直很烂。图睿就一直在折腾,折腾手机,折腾什么机顶盒,后来去折腾车,终于给他蹭上一次风口

    “在英伟达创立初期,我经历了失败,极大的失败,所有的失败都令人羞愧和尴尬。很多都几乎使我们走向了灭亡。”老黄总是有一种创业初期的紧张感,强调快速决策并要求快速执行

  • GPU本质上跟软件是高度耦合的,开始下注GPU产品的多样性以及软件生态的搭建。

另拓生态求生

GPU产品的多样性以及软件生态的搭建,路在哪里?

任务分解

  • 如何将自己身的技术更前沿化,修建更高的护城河

  • 将产品更多元化,更少依赖单一大客户?

GPU技术通用化

首席科学家David Kirk提出了“将GPU技术通用化”的思路

  • 之前主要为了图形图像处理而生,主要做3D渲染,游戏是长期核心业务

  • 应该探索“运行图形渲染”之外的“通用计算”任务,包括超级计算机

    • 科学研究和计算、模拟、药物发现、更专业的好莱坞制作等其他更高端的专业图形领域
    • GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等

黄仁勋支持了David Kirk的想法,在2006年开始投入大量人员和资源研发这样的并行计算程序开发环境,名为CUDA-Compute Unified Device Architecture–计算统一设备架构

David Kirk-大卫·柯克 博士

成功之前路亦难走

计算统一设备架构太前瞻了,外界质疑一片

回顾通用计算,2006年到2008年期间,dx10统一渲染刚刚出来,英伟达就不断投入资源,持续了很多年,当时被人骂的非常惨。

  • 在硬件产品中增加CUDA逻辑电路,这使得芯片面积变大、散热增加、成本上升、故障率增高;图形性能却和AMD差不多,人家价格还便宜,功耗还低
    • 2008年就发生了英伟达“显卡门”事件,高温下屏幕扭曲、画面杂乱,让苹果这些大客户对英伟达产生了不满
  • 至于英伟达那时候扯什么显卡能做通用计算?消费者根本不关心,玩游戏为什么要考虑蛋白质折叠计算?

如果做CUDA的原因仅仅是基于“科学计算”的需求,你将所有市场加起来,也不过是个几十亿美元的小市场华尔街否定CUDA

华尔街起先不看好CUDA

华尔街一直问英伟达,为什么你们做了这项投入,却没有人使用它,他们对我们的市值估值为0美元

围绕着CUDA的质疑一直持续到了AI时代的前夜,英伟达的市值常年徘徊在10亿美元的水平,股价甚至一度因为CUDA附加成本对业绩的拖累跌至1.5美元。股东多次提出希望他们专注于提高盈利能力。老黄也需要说服股东接受成本上升一倍,去搏一个回报周期可能在10年以上的未来

当时,说实话,老黄在当年也无法准确预知,这个市场会有多大,是不是正确的选择。他只知道他押注的是“加速计算”并深信不疑相信这是未来。若这份坚持对的,那么更大更宽的市场会向他打开大门

**智能车,云计算、元宇宙、超算,还有各种各样的一些支撑我们数字化的底层的东西,都需要算力。而这些算力大部分时候,都是需要一种并行的向量计算。**他们可能不需要像CPU那样去处理不同的程序,但是需要做很多简单但是非常繁重的计算任务。很多超算、数据中心、加速卡,他们做的事情就是这类计算,需求的是一种大规模并行向量的计算卡

软件烘托硬件

GPU可以有效地执行多种运算,从线性代数和信号处理到数值仿真。虽然概念简单,但新用户在使用GPU计算时还是会感到迷惑,因为GPU需要专有的图形知识。这种情况下,一些软件工具可以提供帮助

GPU编写程序的复杂度非常高,如果要为更通用的人群做GPU产品,那就要开始做软硬件的生态

  • 满足不同领域的开发者用他们已经熟悉的编程语言在软件生态上编写程序和应用,来驱动GPU处理不同的计算任务
  • 当程序员为CPU编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即Latency。当程序员为GPU编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖Lantency
CUDA软件体系

CUDA编译器,把一个本来是串行处理的东西变成并行。就是因为CUDA降低了编程的难度,所以很多人来用它。如果英伟达没有做在硬件架构上做一个彻底性的变革,后来通用计算的功能也就不可能了。

  • CUDA并非一个纯软件的解决方案,它还需要在硬件上做出相应的设计,从directx10那时的G80至往后都有CUDA相关的硬件设计
  • 经 GPU存储和操作的数据被形象地比喻成“流”(stream),类似于标准C中的数组。核心(Kernel)是在流上操作的函数。在一系列输入流上调用一个核心函数意味着在流元素上实施了隐含的循环,即对每一个流元素调用核心体

早期CUDA让GPU能运行C写的通用计算程序,可惜AMD没有加入合作协议计划(他们毕竟是竞争对手)。NVIDIA发布了CUDA,AMD和Apple等公司也发布了OpenCL,GPU开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等

CUDA真正能够起来,一方面是因为微软背后推动了GPU架构的重大变革,另一方面,在大家都还没看好时间节点的时候,英伟达投入大量的资源去开发相关的生态

坚守与创新

皮衣刀客在守住自己的基本盘——GPU传统图形业务的同时,不断地在未来看得到赔率的地方加速投入。

  • 从g80开始,g90、g200,整整四代的架构、对应五代的产品线。他折磨了无数的玩家,无数买他卡的人,陪他一起去分摊成本

  • 也推出了Tesla系列的专门的计算卡,但是除了超算之外的地方,相对卖得比较少

从又臃肿又难用,到不断自我革命,英伟达挺过来了,等到了那一刻,获得了未来十年的丰厚回报

  • 不断自我革命。英伟达创新性引入了一个东西——tensor core。之前所有的AI计算,都是用GPU里面的CUDA或者说流处理来计算

    • 很多人都觉得流处理器,是给图形渲染局用的,效率比较低,就想用ASIC去做AI计算。那英伟达本来是最不应该去开发ASIC或者加速单元的,因为这是自己抢自己饭碗吃嘛。但英伟达就做了,他引入了Tensor Core,一种专用加速单元,效果非常好,进一步拉大了跟其他后来者的一个差距。

    • tensor core是一种能执行高效矩阵运算的微小核心。以两个32*32的矩阵乘法为例,有tensor core,计算频率周期能下降一半(访问共享内存周期和计算周期都下降)

      Tensor Core是专门针对Deep Learning的应用而设计的专用ASIC单元

  • cuda9.0引入了一个warp矩阵函数 C++语言API,以便开发者可使用GPU上的tensor core,加速矩阵乘加操作

  • NVCC编译器将CUDA代码编译成主机端代码和设备端代码。设备端代码首先编成设备无关机器语言指令集,然后再编译成设备相关机器码

CUDA环境已经在持续投入过程中成型了,一些生物实验室开始买显卡了

Numpy与Tensor的应用区别

numpy虽然在科学计算领域十分普及,但在深度学习领域,有两个制约它使用的因素:没有自动求导,不能用GPU加速。故大公司普遍选择了创立更易用的接口或新的编程语言来进行深度学习计算。另:

tensor可在GPU进行高效并行计算,tensor可别分割成多个块,每个块可以在不同的GPU上进行计算,还有自动求导,形状变换,张量积,矩阵乘法等

AI浪潮

2012-奠基年

图灵奖得主和他的学生

“深度学习之父”的Jeffery Hinton教授带着他的两位学生Alex Krizhevsky和Ilya Sutskeverz,参加ImageNet大赛,设计的深度卷积神经网络AlexNet一举夺冠,开启了之后十多年神经网络AI的迅速发展。

  • Hinton团队参赛的时候,他们发现,如果用CPU来训练AlexNet,需要几个月的时间,于是他们尝试了一下英伟达的GPU,没想到,他们惊喜的发现,两张GTX580显卡只花了一周时间,就训练完成了1400万张图片。人工智能历史上算力的重大突破

  • 装载了CUDA的GPU GTX 580,从因为功耗和发热问题而臭名远扬的“核弹显卡”,一夜之间,变成了通往未来最重要的必要装备

  • 各大厂商,还有各个高校实验室,纷纷开始向英伟达订购GPU

算力大部分时候,都是需要一种并行的向量计算。他们可能不需要像CPU那样去处理不同的程序,但是需要做很多简单但是非常繁重的计算任务

乘胜出击,人类群星闪耀

为了计算和人类的未来

英伟达的硬件,仿佛就是新时代的内燃机,载着AI世代不断前进

黄仁勋敏锐的意识到AI发展的重要性,开始加速打造为AI设计的GPU硬件

捐赠DGX-1
  • 2016 OpenAI之初,就将8块P100GPU的超级计算机DGX-1,送去(捐给)OpenAI的办公室
    • DGX-1价值过百万美元,是老黄带领英伟达3000名员工,耗时三年打造轻量化的小型超算,计算和吞吐能力相当于 250台传统服务器,能把OpenAI 一年的训练时间,压缩到短短一个月

    • 在场的工程师和科学家纷纷签名,里面还有两位华人,附录参考里有现场照[5]

      OpenAI 研究人员围绕率先推出的DGX-1签名

这件事往往被解读为黄仁勋的眼光老辣,但对他本人来说,这无非是确保CUDA成为前沿科学研究者最习惯的框架的又一次尝试

中国的人口红利创新

  • 2016年,种花家互联网金融搞得如火如荼,当年的网贷交易额接近2万亿

  • 2016年,种花家的房价开始翻番,人们为了摇号买房彻夜排队

  • 第二年,种花家网贷开始清盘,楼市迎来最严调控

历史在奖励长期主义者

遥遥领先

为何GPU领先一众专用解决方案

不同芯片的对比
  • 复杂处理由基本计算组成,指令复杂度越高,性能越好,处理器形态越多,单个处理器覆盖场景越小
  • 左侧灵活性通用性,右侧性能高能耗低

DSA:具有一定程度的可编程,覆盖领域和场景比ASIC要大,但仍需要很多面向不同领域的DSA

为什么今天大家选择的是GPU,而不是DSP?本质上来说还是编程环境的易用性。其次,GPU能更好地适配各种各样的任务。

大规模的并行向量计算,是一种计算效率、编程性以及通用性的一个取舍,目前取舍最好的结果就是GPU

  • 相较于ASIC和DSA,GPU每项测试都不能拿第一,但可以每项测试都在前10%,这对下游应用和厂商很有价值

    DSA-特定领域架构

    ASIC-专用集成电路的芯片

  • AI的算法迭代太快了,ASIC和DSA都很难跟上变化

  • 英伟达有符合它的架构,有支持编程的编译器,还能够给你提供一套完整支持的生态,所以才能在今天的环境中走到这样一个地位。英伟达能够跟随时代的发展趋势,不断去调整策略,赌赢了趋势

大家怎么不去卷它

为什么大家都在卷模型,不去卷老黄的市场呢?

因为拿不到入场卷了,整个深度学习的框架已经是老黄的形状了。通过十数年时间CUDA的开发和社区的持续投入,CUDA和各类AI框架深度绑定。

曾几何时,主机甲方爸爸也尝试过统一开放的API–OpenCL,给各家不同GPU提供一个规范,用以开发类似CUDA的通用计算软件框架, 但通用就意味着不一定好用。

  • 各大厂商GPU型号繁杂,驱动差异,质量参差不齐

  • 统一框架缺少针对特定厂商的针对性优化

  • 同等算力下,都比不过CUDA的速度。且开发复杂

    • CUDA Toolkit,Nvidia GPU Computing SDK,Nsight等

同为显卡厂商,AMD有没有解法?

  • 有生态平台ROCm,兼容不少计算框架,但效果不咋地

    • 很多东西理论上都支持 ROCm,但在实践中,当你尝试使用它时,你会遇到大大小小的错误,并且会崩溃或无法正常工作
  • 还要在源码级别对CUDA程序进行支持

    • 各AI框架还费尽心力编写一套支持框架干啥,那就只支持N家的就得了

其它玩家呢

  • 谷歌的TPU也只能做到对自家的Tensorflow框架进行优化

  • Intel的OneAPI还在起步态

风光无限好

当大家都在AI淘金时,英伟达成为了那个卖水的,关键是只有他家的水能解渴

从OpenAI的第一台GPU,到之后微软帮OpenAI训练ChatGPT用的一万颗英伟达A100 GPU打造的超级算力中心,英伟达清楚并关注大模型的进展。它家是如今训练通用模型的最优解,市占率高达95%。GPU在AI工作中的能效是CPU的20倍,H100 GPU在训练大型语言模型方面的效率是CPU的300倍

但护城河并非GPU本身,而是在软件部分

  • CUDA软件框架,允许开发人员和用户在不同型号和连续几代GPU上运行相同的软件,实现无缝升级,并显著简化原始开发

  • 用户们还是会因为太熟悉自06年起步的CUDA的软件生态而不愿意选择非英伟达的GPU

能风光多久,还是一个未知数

  • 在定价方面,英伟达为其他公司留出了很大的竞争空间

    • 有人估计H100芯片成本只需3200美元,但H100的售价高达3万美元

    • “皮衣刀客”,就是对产品性能和价格的精准控制,花少钱买好货?不存在的!

      一款价钱不高的产品,在某方面的性能过于强大,老黄就会对该产品砍一刀,让它在其他方面非常弱鸡

  • 过于重视 AI 发展的英伟达,它的老本行显卡已经被其玩烂

  • 大客户蓄力自研

    • 大客户微软也正在与AMD合作共同自研人工智能处理器“雅典娜”(Athena),来制衡英伟达

    • 特斯拉的自研FSD芯片在2017年12月第一次试产,2018年7月获得认证后开始全面生产,英伟达和特斯拉的蜜月期,也只有短短几年而已

  • 既然脱钩断链,中国人力资本雄厚,准备另玩一个生态

寄语

  • Creativity Create Advantage
  • Innovation Create Leadership

反脆弱生存

你说AI已经够他赚了,老黄又跑去蹭挖矿,蹭元宇宙、量子计算机。这就是很典型的反脆弱行为,不断去做额外的尝试,以便于在未来出现大的机遇或者大的混乱的时候,能够抓住机遇或者规避损失

真正的英雄主义,是认清了生活的不确定性后,努力从不确定性中收益 – 塔勒布

反面的代表

英伟达作风相反的一个很典型的例子,就是英特尔。

2010年,当时的CPU王者英特尔曾传出计划收购英伟达,当时价钱不是问题,问题是该给黄仁勋一个什么职位。从AMD动心收购时就知道想收购老黄的梦想,还是别做梦了

英特尔在十年前天下无敌,没有人能打过它。曾经英特尔有最好的架构,最好的工艺,谁都没有想到,仅仅是因为10纳米制程翻车了一次,整个都被打乱了。看起来很稳的,但实际上它的系统是很脆弱的,没有能抵抗黑天鹅的能力。对自己的工艺过度自信,按着线性外推的结果制定发展策略,一次翻车即遭遇了滑铁卢(原来强势的半导体制造工艺反落后于以台积电为代表的新兴势力,让AMD乘着台积电的工艺占据了优势)

在竞争中寻找新的增长点

DPU(Data Processing Unit)在投资领域又成为一个新的重要科技概念,也要拜英伟达的布局所赐。老黄在演讲中表示:DPU将成为未来计算的三大支柱之一,未来数据中心的标配是:CPU+GPU+DPU,分别用于通用计算,加速计算和数据处理。

随着游戏,3D设计等多媒体图形软件的高速发展,要处理的工作量越来越大,越发复杂,CPU实在忙不过来,就有了GPU分担CPU的压力。DPU出现的道理也一样,也是因为CPU一些难以负担的复杂计算需要进行任务分工。在现在的云计算的趋势下,在数据中心等算力基础设施,提升设施效率,减少能耗浪费,降低成本是一个无法回避的问题。

虚拟化,网络,存储和安全,是数据中心非常重要的工作,大量消耗算力资源。以网络为例,时时刻刻大量的数据在进行传输,主机在收发数据时,需要进行海量网络协议处理工作,根据传统的计算架构,这些协议都是由CPU完成的。要处理10G的网络包,约要占4个Xeon CPU的核,也就是说,业务程序尚未运行,仅仅进行网络数据包的处理,就要占用8核CPU一半的算力。现在数据中心网络不断升级,从10G到100G,甚至400G高速网络,这些开销如何承受。这些开销,甚至被称为Datacenter Tax。

就有公司提出了SmartNIC(智能网卡)的概念,将网络协议处理的工作从CPU卸载到网卡上,以此分担CPU的负载。2015年,AWS率先探索这种模式,收购了芯片厂商Annapurna Labs,于17年推出Nitro系统,同年,阿里也发布了类似功能的神龙(X-Dragon)架构。

2019年3月,NVIDIA花费69亿美元收购了以色列芯片公司Mellanox,英伟达将Mellanox的ConnectX系列高速网卡技术与自己的已有技术结合,在2020年推出两款DPU产品,从此GPU概念正式进入公众视野。DPU不仅仅是智能网卡,扩展将存储,安全和虚拟化等工作从CPU卸载到自己身上。

05年,CPU和内存的硬件虚拟化问题逐渐解决,让虚拟化系统的性能有了大幅的提升,激活了云计算的发展前景和价值。虚拟化发展的过程,是硬件能力不断取代软件能力的过程

DPU是一种新型可编程多核处理器,具有很高的算力,具备高性能网络接口,能告诉解析处理数据,并高效将数据传输到CPU和GPU。在网络协议处理,交换路由计算,加密解密,数据压缩等累活型基础层应用任务很擅长。

英伟达的DPU是首款为AI和加速计算设计的DPU,提供数据中心级的软件定义和硬件加速的网络,存储,安全和管理等服务,为了构建更为强大的生态,NVIDIA专门给BlueField DPU打造了开发平台–NVIDIA DOCA(Data Center Intrastructure On A Chip Architecture),数据中心基础设施体系架构,利用行业标准API快速创建网络,存储,安全和管理服务,及AI/HPC(高性能计算)一系列应用程序和服务,从而迅速推出新产品。利用专业合理分工,促成数据中心能效最大化。

功成名就的英伟达不再需要苦口婆心地向市场证明自己眼光的独到之处,创投圈已经蜂拥尾随。

2020年,创投圈曾流行过一个笑话。

“DPU是什么?”

“支付宝到账,一亿元。”

只要触发了DPU这个关键词,钱就会滚滚而来

国外厂商中,Marvell、英特尔、AMD均研发了DPU或DPU的对位产品,国内亦涌现出一批DPU初创企业。

参考