CPU是现代电脑的核心
近年来,新闻都在讨论AMD是如何在x86领域超越Intel,Arm为首的RISC架构是不是真的要击败x86的CISC了呢?还有RISC-V会不会威胁到x86跟Arm呢?

但在讨论这些未来性问题前,我更好奇的是CPU发展的历史。究竟是哪些人发明了CPU?在我了解相关的历史后,我发现某种程度上,CPU被重新发明了好几次。
今天就让我们来聊聊CPU的进化史,一路从1970年第一颗CPU的发明,讲到今天x86、Arm、RISC-V三强鼎立的局面。那我们就开始吧。
1969年,一家名叫Busicom的日本公司请Intel帮忙设计一台桌上型计算器,需要由8块晶片组成。但当时Intel刚创业,正在研发3款不同的记忆体晶片,没有时间再设计这8块新的晶片。
当时Intel的第12号员工Marcian Hoff(Ted Hoff)想出了另一个解决办法:何不设计一块可以跑简易程序的晶片,用来满足客户原本8块晶片的功能需求?
仔细思考了几天后,Marcian Hoff画出了四块晶片的技术草稿:一块存放运算资料的记忆体、一个存放程序的只读记忆体、一个处理资料输入和输出的晶片,还有一个可以跑简单软件程序的中央处理器晶片。而这块中央处理器的代号是Intel 4004,这也是人类历史上第一颗CPU。我称它为CPU的第一次发明。
Marcian Hoff把他的想法报告给Busicom公司,但是Busicom质疑这个方案的可行性。于是Marcian Hoff只好再把这个点子跟Intel创办人兼CEO Robert Noyce说。Robert Noyce当时忙着思考DRAM的事情,但他的直觉认为Intel 4004可行,他鼓励Marcian Hoff尝试把它做出来。
Marcian Hoff跟另外两位工程师Federico Faggin、Stan Mazor在1971年1月一起完成了这一颗人类历史上第一颗CPU。但当时Intel的行销人员对Intel 4004十分悲观:当时整个世界只有2万台电脑,假设Intel有1/10的市占率,那一年也只需要2000块Intel 4004,完全不够研发成本。
但Marcian Hoff等人继续CPU的研发工作,他们在1972年发表了8位元的Intel 8008。而这一次,有更多人开始尝试在CPU上面写程序,包括在西雅图的两个高中生:Paul Allen和Bill Gates。
Intel开始意识到CPU有无限的前景。Intel在1973年再次推出了使用CMOS制程的CPU——Intel 8080,定价360美元,用来讽刺IBM 360昂贵的售价。不同于前面的产品,这块晶片很快获得市场接受,各种家用计算机开始采用Intel 8080,包括Altair 8800。
CPU的无限前景激起了工程师的创业梦,也吸引了各半导体公司进入这个市场。曾经参与过Intel 4004、8008、8080设计的Federico Faggin离职,创办了Zilog,推出Z80。Motorola也推出了6800。参与Motorola 6800设计的工程师又集体离职,创办MOS Technology,推出MOS 6502。当时的Apple I跟Apple II就是使用这一块晶片。
CPU市场的激烈竞争也激发了技术创新。Intel在1979年推出了首块具有Pipeline功能的CPU——Intel 8086,Zilog跟Motorola也推出了对应的Z8000跟68000。但这些半导体公司对CPU都还没有明确的市场定位,他们的行销人员会把CPU卖给游戏机公司、电脑公司和其他电子零件公司,个人电脑公司只是他们的其中几位客户而已。
1981年,IBM为了尽快推出个人电脑,决定采用Intel 8088。IBM PC的爆红也让Intel意识到,个人电脑才是CPU最重要的战场,必须全力投入研发跟技术支持。
1982年,Intel推出了完全兼容8086的新版CPU——80286。市场上开始出现大量利用8086跟80286生产的IBM PC兼容机,这些晶片的指令集也开始被称为x86。
1985年,Intel推出了32位元的80386。在PC进化史中,80386的出现意味着个人电脑的技术主导地位从IBM转移到Intel。1989年Intel再次推出热销的80486,让Intel摆脱日本半导体公司在DRAM的竞争,重登世界半导体销售冠军的宝座。
为了对抗Intel,Motorola也接连推出68010跟68020,Apple Macintosh就是使用68020作为它的CPU。
CPU的火爆也引起了学术界的研究。当时的CPU设计有一个问题,就是它们的指令长度不一,这导致了Pipeline电路很难实现。于是UC Berkeley的David Patterson跟Stanford的John Hennessy在1981年提出RISC(精简指令集)的概念。他们主张CPU的指令集必须长度一致,任何复杂的功能都必须用这些简单、长度固定的指令来完成,这样可以最大化利用CPU的电路。而其他长度不一的指令集CPU,包括Intel 8086跟Motorola 68000,则被称为CISC。
David Patterson跟John Hennessy预言,随着CPU功能越来越复杂,CISC CPU将会因为Pipeline难以设计,最终在效能上输给RISC CPU。他们也把RISC的理念写成了经典的Computer Architecture教科书。在这里我把RISC CPU称为CPU的第二次发明。
John Hennessy还创办了MIPS公司,专门研发RISC CPU,也是最早的无厂半导体IC设计公司之一,委托Toshiba、LSI Logic等公司帮忙制造晶片。他们在1985年后分别推出R2000、R3000、R4000,被大量用在SGI跟DEC的工作站电脑。
MIPS的成功吸引了当时专门制作工作站电脑的Sun Microsystems。原本Sun的工作站使用Motorola 68000,看到RISC的好处后,他们开始向David Patterson咨询CPU设计,并在1987年发布自己的SPARC RISC CPU,取代Motorola 68000系列。他们决定让SPARC RISC CPU的指令集开放授权,所有人只要付授权费就可以利用SPARC指令集。很快地,SPARC CPU成为工作站、服务器电脑市占率最大的指令集架构。
看到同为工作站竞争对手的Sun Microsystems赚得风生水起,HP跟DEC也坐不住了,他们分别在1986年推出PA-RISC架构、1992年推出Alpha RISC架构。
就这样,Intel为首的CISC占领了个人电脑市场,RISC CPU争霸了工作站、服务器市场。而在个人电脑领域受挫的IBM、Apple、Motorola也决定在1991年投入RISC阵营,联合推出PowerPC RISC CPU架构,试图联合击败Intel。
面对RISC阵营的强势来袭,Intel当然不会坐视不管。Intel曾经在1988年推出自家RISC的i960,但是由于不兼容x86指令集,市场反应不佳。x86指令集的巨大成功,这时反而变成Intel不能转向RISC的包袱。
没有退路的Intel只能选择在自己的x86 CISC指令集上狂飙,靠着更先进的CPU技术、半导体制程技术,加上个人电脑PC庞大的市场资金,应该可以与RISC抗衡——应该吧……
1993年,Intel将自己的CPU命名为Pentium,并首次采用SuperScalar技术,又在1997年的Pentium II使用了SIMD的MMX技术。制程技术也从Pentium的0.35微米一路进步到2001年的0.18微米。
1995年,研发出微指令(Micro-Ops)技术的Pentium Pro在性能上有赶超同时期RISC CPU的趋势。虽然还是CISC架构,但是Micro-Ops可以在硬件层面把CISC指令转成RISC指令。从此人们发现原来CISC的效能也可以做得跟RISC一样好。
反观RISC阵营,MIPS、SPARC、PA-RISC、Alpha、PowerPC瓜分了本来就为数不多的工作站电脑市占率,在资金收集和研发投入上都远远落后于Intel。1995年后,越来越多工作站电脑改采用Intel Pentium Pro。Intel的x86 CISC架构即将 在CPU市场上获得全方位的胜利。
Intel也决定在2001年推出目标市场在高效能服务器的64位元Itanium CPU,准备亲手将RISC送进墓碑。但事情会这么顺利吗?
Itanium是一款独特的EPIC架构的CPU,目标是取代原本自家的x86架构。虽然Intel的x86架构大获成功,但是依照处理器设计的哲学,大家都知道RISC是更好的设计。Intel只是依靠着更强的半导体制程技术跟更多研发资金,来延迟x86架构的死亡时间点。
于是Intel便想趁着这一次64位元升级,逼迫使用者更换全新的EPIC指令集。殊不知,软件商根本不买单,大家疯狂抱怨要重新编译程序很麻烦。而且EPIC仰赖Compiler将软件转成VLIW风格的指令,但事实证明,即使是当时最好的Compiler也很难产生高效率的VLIW程序。这使得Itanium的实际表现往往不如预期。
就在大家抱怨连连时,AMD跳了出来,说大家可以尝试我们的AMD64——一款兼容原本x86指令集的64位元CPU架构。等等,x86不是Intel发明的吗?怎么突然有其他公司也可以开发x86 CPU呢?
其实当年IBM要给Intel CPU订单时,担心单一供应链有一天会被Intel把持住,所以当时要求Intel再找另一家半导体公司授权他的技术,让他可以成为x86 CPU的第二供应商。当时Intel CEO Robert Noyce看上了同样是仙童半导体出来的AMD。AMD的创办人Jerry Sanders是销售出身的,Robert Noyce认为AMD在技术领域威胁不了Intel。
因为这层关系,AMD默默地在Intel的授权下慢慢成长。虽然技术跟市场占有率完全无法跟Intel相比,但x86 CPU第二供应商的宝座也够AMD活好一阵子了。
但在1996年,推出媲美RISC效能的Micro-Ops后,Intel拒绝把相关技术透露给AMD。为了维持市场地位,AMD开始自主研发微架构。他们找到了原本在DEC开发Alpha CPU的Jim Keller。1999年AMD推出了K7 Athlon,早于Intel率先进入1GHz时代。
除了AMD外,同时期还有非常多的半导体公司惦记着x86庞大的市场,包括联电、Cyrix、Centaur、RISE、Transmeta,都试图自行设计x86 CPU。但这些公司统一都受到了Intel的官司铁拳伺候。因为没有Intel的官方授权,Intel会花大量人力和资金控告他们侵犯知识产权,并试图禁止他们在美国销售x86的CPU。这些公司本来就不大,又被迫浪费大量金钱在打官司上,很快经营不下去。
1999年,台湾的威盛电子VIA收购Cyrix和Centaur,成为x86 CPU第三大的供应商。威盛电子VIA原本是靠着设计南桥晶片起家的,在2000年还荣登晶片组市占世界第一的宝座。在有了庞大的资金后,也想进军x86 CPU的研发。虽然无法在高端领域跟Intel、AMD相比,威盛的x86 CPU选择把重点放在低成本,靠着牺牲SuperScalar、SIMD等进阶功能,在低价电脑领域找到自己的一小块利基市场。
2001年开始的64位元转换潮,即将迎来Intel、AMD、威盛这三家x86 CPU厂商的最终对决。
前面提到不相容原本x86指令集的Itanium出师不利。AMD在Jim Keller的带领下,继续2003年推出的K8 64位元处理器,高调宣布全面兼容x86指令集,客户掀起一波从Intel到AMD的转移潮。而这一次可以完全兼容x86 32位元指令的AMD64指令集,我认为 是CPU的第三次重要发明。K8处理器的大成功也让Jim Keller在CPU设计的历史上一战封神。
2006年,AMD第一次占据了全球一半的处理器市场。威盛电子原本也计划要在2006年推出自己的64位元CPU,但是因为技术延迟推移到2008年。同时Intel跟AMD开始把更多南桥晶片的功能做进CPU,并且逐步取消晶片组的授权,用来打击威盛、Nvidia等靠着晶片组获得庞大利润的IC设计公司。
错失64位元商机和晶片组利润的消失,让威盛在2008年金融海啸时股价跌入谷底,从此再无和Intel、AMD血拼的力气。
Itanium的失败逼着Intel只好再次回到Pentium架构,而64位元的指令集只好采用AMD64。这边要特别提醒,现在大家使用的x86-64位元指令集,当年是AMD发明,不是Intel。
既然x86的包袱甩不掉,那就只好模仿1990年代击败RISC CPU的策略,靠着更先进的CPU与制程技术,在x86 CISC这一条不归路上狂飙吧!
2002年,Intel推出的Pentium 4首次支援Hyper-Threading Technology。四年后Intel又推出了基于全新Core微架构的Core 2 Duo处理器,这也是Intel首次采用Multi-Core技术。2007年Intel提出Tick-Tock的策略,也就是一年提升半导体制程、一年更新CPU架构。制程技术也从2006年的65纳米一路进化到2016年的14纳米。
反观AMD这边,2006年击败Intel成为CPU龙头后,就飘了。那一年AMD买下了ATI,想要同时进攻CPU和GPU市场,但结果就是资金因为收购案而耗尽,无法全力投入科技研发。这个时期的AMD不知道要优先研发CPU、GPU还是半导体制程。原本预计要在2006年推出的K9架构莫名其妙就消失了,只好在2007年推出K10架构,但是市场反应不好。2008年又遇到金融海啸,被迫拆分自己的半导体制造工厂,独立成GlobalFoundries。一路到2015年,AMD再也无力跟Intel竞争。
倒霉的不只有AMD,Dell、HP这些使用Intel晶片的个人电脑公司也开始可以制造出性能强大的工作站电脑。原本采用RISC CPU的工作站电脑公司纷纷不敌Intel 64位元CPU的优秀性能。DEC在1998年就卖身给Compaq,而Sun电脑在2009年也卖给了甲骨文。
从此Intel在CPU领域享受了长达10年的王者地位。在电脑领域,最终是CISC击败了RISC。
但在嵌入式领域,RISC的简洁设计,让MIPS CPU彻底称霸了这个市场。当然一方面也是因为电脑市场太大了,Intel、AMD、Motorola、IBM等公司完全无心再另辟战场。
Sony在1990年代初研发PlayStation时,是想发明一款可以支援3D游戏的游戏机。但是使用3D电脑图学的晶片需要耗费大量成本。为了控制PlayStation的售价,低成本且稳定的MIPS CPU变成了Sony的首选。
另一方面,任天堂在1996年研发的Nintendo 64同样也是想要尝试最新的3D电脑图学技术。但不同于Sony,任天堂在图学晶片上与SGI合作,而当时MIPS已经被SGI收购了,任天堂也理所当然地在Nintendo 64上选择使用MIPS CPU。
1990年代的游戏机基本上是日本在主导。而在电脑CPU不敌美国的日本,也试图在游戏机领域夺回CPU技术的主导地位。日立Hitachi自主研发SuperH处理器,采用RISC风格的指令集设计,搭载在Sega Saturn和Dreamcast两款经典游戏主机上。可惜最后Sega的主机败给了Sony和任天堂,让日本的CPU指令集无法扬名于世。
除了游戏机外,2000年初MIPS处理器也被大量应用在路由器和交换器等网络产品,还有打印机、数字电视机顶盒、DVD播放器等消费型电子产品。这些装置对成本和功耗有严格要求,而MIPS灵活的授权模式正好符合这些厂商的需求。
在大西洋的另一边,旧工业时代的霸主——英国,也想参与这场CPU设计大战。1990年代成立的Arm也以RISC CPU设计的理念想要参与电脑市场。但前面提到,电脑领域CPU厮杀得这么血腥,英国的小市场完全无法支持Arm跟拥有美国大市场的半导体公司竞争;嵌入式领域又完全不敌先行者MIPS。导致Arm在创业初期年年在垂死边缘挣扎。
营业额的不足迫使Arm必须采用全新的商业模式,也就是IP授权,赚取非常微薄的权利金。传统x86、MIPS、SPARC的指令集授权模式是开放让其他公司使用这些指令集设计CPU,但是电路必须他们自己设计。赚不到钱的Arm只好可怜地连CPU电路都设计好给客户,这种方式被称为IP授权。
而最终帮助欧洲人的还得是欧洲人。1990年代,Nokia决定步入手机市场,1997年在设计2G GSM手机Nokia 6110时,Nokia想找到一款便宜的CPU。刚好售价非常低、还会帮你设计完电路的Arm,完美地符合他的需求啊。
我们绝对想不到,后来手机市场会变得如此之大,甚至是游戏机、路由器、机顶盒的好几倍大。Arm开始专注在手机CPU领域的研发,从一开始的Nokia手机一路到后面的iPhone、MediaTek、Qualcomm、Samsung智能手机。Arm以超低的授权金和完善的IP电路设计,帮助手机厂商最快速地推出产品,也让Arm摇身一变,成为CPU设计领域出货量最高、影响力最大的公司之一。
Arm的成功,我认为算是CPU的第四次伟大发明。如果你想更了解Arm这间公司的创业历史,还有你也想知道Arm这间公司到底赚不赚钱,为什么这几年Arm……这些故事的答案都在本周的会员影片:《Arm简史——最重要却最不赚钱的半导体公司》。欢迎加入会员收看哦。
2010年5月,UC Berkeley的Krste Asanović教授跟他的学生Yunsup Lee和Andrew Waterman正在思考他们下一个关于CPU的研究题目。由于2010年时CPU指令集已经非常成熟,不再是当年1980年代RISC架构刚开始兴起时自行定义指令集、撰写Compiler的土炮研究模式。于是他们优先参考当时市面上成熟的指令集——x86、Arm、MIPS等等,想基于这些指令集来实现他们想象中的下一代CPU。
但他们发现,如果要基于这些指令集实现CPU,都需要收费!2010年代,免费的规格像是TCP/IP、OpenGL、POSIX早就已经存在于网络、电脑图学、操作系统等领域,但CPU竟然没有。任何人想基于现有工具实现CPU,竟然都有侵权风险。
于是他们开启一个「三个月的夏季项目」,目标想要研究出一个免费、公开的指令集规格。由于他们是在UC Berkeley David Patterson教授主持的并行运算实验室中做研究,所以这位当年提出RISC概念的图灵奖得主也参与这个项目中。1980年代时,David Patterson已经发表过4代的RISC指令集,而这一次版本就被称作RISC-V。
为了验证RISC-V指令集的可行性,研究团队开发的一个指令集模拟器名为Spike。Spike可以模拟RISC-V硬件,输入指令软件后模拟出相对应的结果。另一方面,他们也使用了UCB新发明的Chisel硬件描述语言,设计了真正的RISC-V CPU:Rocket。
在经历了长达4年的概念验证后,跟各种学术发表,确定使用者真的是有兴趣后,Krste Asanović等人在2014年正式发表了RISC-V第一版指令集,并发表了《Instruction Sets Should Be Free: The Case For RISC-V》的文章,阐述了他们想要创造免费ISA规范的理念。2015年还成立RISC-V基金会,负责「维护、管理RISC-V指令集」。
RISC-V我认为是CPU历史上第五次的重新发明。虽然RISC-V指令集是免费的,但是利用RISC-V设计的CPU是可以卖钱的。于是Krste Asanović和Yunsup Lee、Andrew Waterman三人在2015年成立SiFive,专门设计和销售RISC-V CPU。Nvidia、Western Digital、Microchip等半导体公司很快表现出对RISC-V的兴趣。
但是本质上RISC-V并没有太大的技术创新,只是成本更低而已。现在RISC-V还缺乏许多软件生态的支持。为解决软件生态不足的问题,2023年5月由高通、Google、Intel、NXP、Nvidia、Red Hat和三星等公司在Linux基金会下发起了RISE项目,希望可以尽快帮RISC-V整合进现在的Linux等电脑软件中。
另一方面,在原本的x86战场上,Intel的制程技术在2016年后开始被TSMC超越。AMD放弃晶圆厂的战略顿时变成了优势。AMD的x86 CPU开始在性价比上大幅领先Intel。而且TSMC的先进制程不再专属x86 CPU,Arm等相关的RISC架构现在也可以使用世界上最先进的制程技术。Intel原本靠着制程技术在CISC路上狂飙的作战计划顿时失灵了。
Apple推出了自家基于Arm指令的M1晶片,多家半导体公司也考虑推出服务器领域专用的Arm架构CPU,想要强占x86的市场。而Arm靠着完善的软件生态,已经变成了各半导体公司RISC CPU的首选指令集架构。
Arm最近几年开始想要涨价、收割利润。IC设计公司为了不被Arm绑架,各个扬言要转向RISC-V,也开始积极投入RISC-V相关的软件生态研究。
目前CPU的格局就是AMD跟Intel凭着x86庞大的软件遗产继续享受着高利润,而AMD又因为有台积电制程的加持,开始有能力跟Intel打成五五波。Arm的RISC CPU也因为可以享受台积电的制程红利,开始进军笔记本电脑、服务器市场,同时Arm也想涨价、摆脱以前的低价策略。原本大量使用Arm的IC设计公司开始拿着RISC-V当护身符,迫使Arm不要涨价。这种恐怖平衡不知道还要维持多久。
不知道各位看好Arm取代x86吗?或者是RISC-V会取代Arm呢?欢迎在留言区分享你的看法哦。
