主题:美国的金融扫荡与中国的工业扫荡 -- 贼不走空
首先需要说的是,龙芯从一开始,目标就是高性能计算+通用CPU。尽管龙芯1是面向嵌入式,但当时就声明,这是起步时的练手。龙芯的定位是由国家的需求决定的,不是市场的风向引导的。至于国家为什么这么需求,没有切身体会的同学完全可以现在试着在digikey等网站上订购PandaBoard/DragonBoard这些看起来平平无奇的ARM开发版,享受一下查阅ECCN和CCC的那份快感就可以亲身了解到。市场风向无常,个人或公司完全可以选择做墙头草,摇来摆去,这个无可厚非。但是如果有人抓住了我没看见的需求,取得了成功,我却只会放嘴炮无端指责,除了凸显我自身的无知和猥琐以外,别无他益。
ARM从来就不是做高性能计算的指令集。撇开技术细节,ARM从来就没有进过Top 500。我反复开启搜索引擎,只找到一条新闻,讲的是西班牙从欧盟弄了一笔钱,要做个ARM的集群,想冲击Green 500。这个ARM的集群,看描述就是一个玩具,预期指标也远低于Top 500的门槛,所以只能退而求其次,转向Green 500这个losers的安慰奖。而且所有相关的新闻都是过去将来时,所以现在我还无法确定它是否成功混进了Green 500。反观龙芯,2013年2月交付国家超级计算深圳中心的集群有300 TFlops。虽然找不到这个集群的linpack成绩,但是按当时的Top 500指标,它单独作为一套高性能计算集群肯定能进Top 500,现在也未必会跌出Top 500的名单。更不要说作为整体的曙光6000,当年Top 500的第二名。在龙芯追求的这个方向上,拿ARM来讥笑龙芯或是龙芯选择的MIPS,是很可笑的行为。
让我们回到技术细节,谈谈为什么长期以来没有人用ARM做高性能计算这个问题。这是因为,在2002年的时候,在体验过Alpha 21164和R10000的惊艳之后,人类就已经知道,下面这些特征是高性能计算必须的:多路并行,64位, 超标量,分支预测,乱序执行,SIMD指令集扩充。除去容易理解的多路并行和64位,其他特征都是为了在一个时钟周期里运行尽可能多的指令。因为CPU所能运行的最高频率受工艺的限制,有物理上的上限,所以,CPU设计的优劣,更多地反映在一个时钟周期里面能完成多少条指令这个指标上。当时基于MIPS64指令集的R10000,已经具备这些特征,R10000及其衍生版本的成功,也从实践上检验了这一点。MIPS在2005年之后之所以长时间从Top 500的列表上消失,并不是因为技术上的原因,完全是因为其背后的推手SGI因为dotcom泡沫元气大伤,无力继续研发的原因。和MIPS同病相怜的,还有DEC的Alpha和Sun的SPARC。
那么,让我们看看在ARM指令集或芯片上实现这些特征的时间:
多路并行: 2007年 (Cortax-A9)
64位: 2011年 (ARMv8-A)
超标量: 2005年 (Cortex-A8)
分支预测: 1996年 (ARM8,原始的静态预测)
乱序执行: 2007年 (Cortex-A9)
SIMD指令集扩充: 2002年 (ARM11)
完全满足这些指标的ARM芯片,要等到2014年Cortex-A57以及第三方如Cavium的ThunderX等才出现。反观龙芯,2003年的龙芯2就具备了所有这些特征。落后十年呐!
在我写这个回复的今天,高端的ARM芯片一个时钟周期只能做1-2个双精度浮点运算,龙芯能做8个,Intel的Haswell能利用AVX2指令做16个双精度浮点运算。注意高端ARM和龙芯频率接近(1.5GHz左右),而Haswell比他们高1.5-3倍,这是为什么Haswell比龙芯性能高几倍,而龙芯又比ARM高几倍的原因之一。如果讨论他们在有分支的计算代码上的性能表现,恐怕差距还会拉大。这也就是为什么靠码数量,龙芯还能在超级计算领域里面勉强一战,而ARM就只配去做玩具的原因。落后十年呐!
回到千年之交的时刻,撇开日本的一系列稀奇古怪的处理器不谈,那个时候高性能计算就IBM的Power,HP的PA-RISC,SGI的MIPS和Sun的SPARC,除此之外,DEC的Alpha相当惊艳,鹤立鸡群。这里面论技术还是SGI, Sun和DEC,朝气蓬勃。x86? 那是教科书里的反面典型,Intel虽然靠码数量也能在Top 500里面冒个尖,但是绝对不成气候,他自己也觉得不光彩,和HP凑到一起研制Itanium。这里面只有MIPS算是开放的,有些第三方的嵌入式CPU设计,其他的指令集都完全受控于一两家大公司。所以MIPS是当时龙芯唯一的选择。
如果这时我们拥有一个可以预测未来十年的水晶球,我们会看到什么呢? 暮气沉沉的Power还是那么暮气沉沉,Itanium其兴也勃焉其亡也忽焉,而Alpha、SPARC和MIPS都看似已死,反倒是x86一统天下。ARM则从来没出现在这个水晶球中。对龙芯选择指令集唯一有用的信息是, Alpha和SPARC的设计会被像草纸一样丢在路旁,扔几个小钱钱谁都可以拷一份回家。当然龙芯也能选Alpha或SPARC,前提是你愿意等上十年,还得有这个水晶球。所以MIPS仍然是最佳的选择。顺道说一句,谁都可以拷一份Alpha或SPARC的设计回家,但是要把它玩起来,你得在中国政府和日本政府两条大腿中选一条抱,不抱大腿完全没戏,抱错了比如抱到俄罗斯欧盟等等大腿上也没戏,现实就是这么残酷。
另外有些话需要对嘴炮英雄们说一下。十年前你们说龙芯抄MIPS,听起来懂得又多又有正义感,能蒙不少人。那时候我读书少,要是被你们蒙住也不算得冤枉。十年之后你们还说龙芯抄MIPS,就很不明智了,毕竟这十年除了你们原地踏步以外,其他的变了,连我等听众的见识也不一样了。除了龙芯,你见过支持超线程、虚拟化、x86模拟的MIPS? 如果有心,看看"MIPS instruction set"这个维基百科的条目,就可以了解到,十年前,MIPS靠的是SGI,今天,MIPS靠的是龙芯,十年之后? 龙芯就是MIPS,MIPS就是龙芯! 放这等狂言都不需要水晶球,只需要对人类记忆容量的了解。试问除了我这样的考古爱好者,今天还有几个听说过SGI, Origin 2000, R10000和IRIX的人,更不要说SGI的全称和IRIX启动顺序这样的细节问题。十年之后,MIPS和Alpha就是中国的,SPARC就是日本的,如果两国政府还这么有钱有闲有任性的话。如果今天你还在纠结于"龙芯抄MIPS",我只能说,落后十年呐!
- 相关回复 上下关系8
压缩 12 层
🙂糊弄领导显然是不对的,没必要为他洗地 1 向前向前 字348 2015-01-15 20:40:48
🙂你听过北大众志么 可梦之 字71 2015-01-22 13:25:22
🙂时间倒退到2002年, ARM不过是芸芸CPU中的一个 100 陈王奋起 字1217 2015-01-15 22:10:41
🙂MIPS64是正确的选择,而ARM则从来就不是一个选择
🙂你说的那你说的那些高性能芯片特征龙芯都有么? tanhuan 字495 2015-03-15 13:04:35
🙂在有些人看来,中国是不存在阿琼和LCA的 1 cgangcm 字266 2015-01-26 02:34:08
🙂路过了就来回复一下 17 打架手揣兜 字957 2015-01-22 01:21:57
🙂是的,ARM是未来,GPGPU是未来 1 原手 字333 2015-01-23 09:26:48