也谈“龙芯”签约MIPS
本文由《嵌入式系统Linux内核开发实战指南(ARM平台) 》一书作者 王洪辉 提供
购买本书
近日,我国拥有自主知识产权的高端处理器“龙芯”的设计单位中国科学院计算机研究所与全球老牌处理器架构企业美国美普思(MIPS)公司签约,获得其MIPS32与MIPS64架构的授权,中科院计算所将借此开发“龙芯”处理器。一石激起千层浪,此消息一出,网上立即流出多篇批判“龙芯”的檄文,以“龙芯签约MIPS ,自主产权CPU核战略宣告失败”和“汉芯龙芯中国芯,芯芯造假”两篇“高论”最具代表性和影响力。
我大概可以算得上是满怀爱国热情的公民,每当得知中国在某个领域取得某项成果时我总会激动不已,而每次看到原本引以为豪的科技成果却最终被查明是造假时也会感到气愤、失落,黯然神伤;假如是在10年前,上面的这条消息加上那些“高人”的评论,对象我这样一个“愤青”来说,无疑是晴天霹雳、当头一闷棍,仿佛天都要塌下来!
然而,我这次的反应可能要让某些人失望了,当我第一眼在媒体上看到“龙芯”签约MIPS的报道时,我顿然兴奋起来,同时伴有嗓子发涩、鼻子发酸的感觉:“龙芯”豁达了,“龙芯”自信了,“龙芯”终于化蛹为蝶了!中国终于有了自己的高端处理器!这种第一感觉我好像是辞职在家专门研究Linux内核一年多,最后整理出《嵌入式系统Linux内核开发实战指南(ARM平台)》之后才开始有的,有时我重新翻看这本书,细读书中内容,读着读着,视线竟会不自觉地变得朦胧起来!
我大学毕业以来一直从事嵌入式系统和操作系统内核开发工作,可以说对处理器芯片(CPU/MCU/SOC)还是有一点发言权的,市场上最流行也是最常用的处理器架构大概有:X86、单片机、MC68K、ARM、PowerPC、MIPS、DSP;X86处理器基本都用来设计成PC或者服务器,我们将它们统称为“电脑”,这些“电脑”独自成为一个产品、一个系统;而单片机、MC68K、ARM、PowerPC、MIPS、DSP等处理器也同样被设计成“电脑”,但是这些“电脑”通常被置于某个产品的内部作为这个产品的一部分,这个“电脑”必须与产品中的其他部分密切合作才能实现这个产品的功能,但这个产品并不叫“电脑”,它的名字叫:冰箱、电视机、洗衣机、空调、手机、电子广告牌、路由器、交换机、汽车、轮船、机器人、飞机、火箭、飞船、航天飞机,等等; 由此我们单独把X86处理器称为通用处理器,而把单片机、MC68K、ARM、PowerPC、MIPS、DSP统称为嵌入式处理器。
世界上生产处理器芯片的厂家有无数,但他们生产的芯片绝大部分都属于以上几种架构,只有少数厂家设计生产一些自成体系的处理器,他们有自己的指令集、编译连接器、调试器、集成开发环境,有的甚至还有自己的小型操作系统,但他们的这些处理器基本都是自产自销,专用于他们自己的某些产品中,而且这些处理器都是比较低端的,针对性强,应用也比较窄,同时也正是因为他们所有都是“自己造”,导致技术比较封闭,公开资源少,了解的人不多,开发的人自然就少,所以它们根本不可能形成主流,当然这些公司并非靠生产芯片挣钱,而是靠卖产品发财,所以严格来说,这些公司算不上是专门的芯片生产商,而是某个产品(如照相机)的生产商,一旦他们的产品滞销,他们“自己造”的芯片也将随之退市。
不同架构处理器之间最根本的区别是指令集而不是其他,也可以说指令集是区分不同架构处理器之间的标志;指令集最本质的含义在我看来应该是指汇编指令与二进制机器码的对应关系,汇编指令又可以叫做指令的名字,综合起来,指令集就是指令名字与二进制机器码的对应关系;各种处理器架构之间的不同就表现在它们各自使用不同的指令集,但事实上,不同处理器架构的指令种类基本都是相同的,只是设计它们的公司并没有考虑相互融合与统一的问题,所以这些指令被人为冠以不同的名字与不同的二进制代码,尽管它们表达的意思是相同的;每一种指令集都必须有自己的将指令名字翻译成二进制机器码的编译器,指令集的不同使得各种处理器架构必须使用各自不同的编译器;从世界大同的角度来考虑,这其实是一种人为制造的壁垒和障碍,也是一种重复用工、浪费资源的现象;假如在不同架构处理器上使用相同的名字与二进制机器码来实现相同的功能,那么,不同的处理器架构就可以使用相同的编译器,而这从技术上是完全可以实现的,关键是在人的因素。
处理器的核心技术并非指令集,指令集属于软件范畴,而处理器芯片本身属于硬件范畴;处理器的真正核心技术体现在芯片内部实现每条指令的效率以及所支持指令的种类和数量上;不同级别的处理器所支持的指令种类和数量可能是不一致的,性能越强、功能越多的处理器支持的指令种类和数量越多,执行指令的效率也越高,这一点对所有处理器架构来说都是相同的;由此看来,如果我们想自主设计一款处理器,我们根本没必要只是为了一个没有太多实际意义和技术含量的概念而标新立异地去设计一套全新的指令集(其实就是给指令起一个不同的名字而已),就像我们自主设计一个操作系统并不必要首先另行设计一种类似C的编程语言一样,我们完全可以选择一套目前最全、最完善的指令集,然后用自己的思想和方式来实现这些指令,这样我们就可以借用这套指令集现成的编译器和开发环境,减少了芯片设计成功之后配套软件的开发需求,也就缩短了芯片上市周期,一旦芯片设计成功立即可以走向市场,应用到实际产品当中去;如果我们自己独创一套全新的指令集,那么我们就必须开发一套全新的编译器,还有其他配套调试仿真软件,那样的话,即使芯片设计成功了也可能因为后续配套软件跟不上而无法使用,这是大家想看到的吗?
前面提到的所有处理器架构中,我除X86用得多(电脑天天用)却没做过开发之外,其它的处理器架构我都在上面做过开发,有的架构甚至在多款芯片上做过开发,比如ARM架构处理器我开发过的芯片型号有:S3C4510、S3C44B0、CS89712、AT40800、S3C2440、IXP425,PowerPC架构处理器我开发过的芯片型号有:PPC860、PPC8260、PPC405DP、PPC440EP;X86处理器的指令集属于MISC,总体来说效率比较低,而嵌入式处理器的指令集大多是RISC,执行效率比较高,所以现在Intel新出的处理器也开始渐渐向RISC方向转变;在嵌入式处理器中,目前做得最好、性能最强的就是MIPS架构处理器,我在2005年用美国BroadCom公司的BCM1250处理器设计了国内第一款嵌入式服务器,BCM1250芯片是MIPS(64)架构,双核,最高频率可达800MHz,当时通过性能测试比较是与Intel的Xeon高端服务器整体性能相当在某些方面略强的,不久我又从美国另一家公司RMI了解到,他们已经设计出了8核MIPS(64)处理器,最高频率可达1.2GHz,而且每个核都是硬件双线程,这款芯片的软件与BCM1250的软件完全兼容;而其他处理器据我了解目前能做到多核的极少,至少我目前还听过也没有实际用到过,并且它们的频率都达不到上述MIPS处理器的频率高度;由此,我认为MIPS处理器目前至少是嵌入式处理器中性能最强、最高端的处理器,相应的MIPS处理器的指令集也是最全、最完善的,那么,如果让你在这些处理器架构指令集中选择其中的一套来设计一款高端处理器芯片,你会作何选择?我相信,英雄们都会选择MIPS的!
事实上,从互联网上的一些信息我们可以看到,MIPS公司本身从来没有自行向“龙芯”提出任何侵权指控或诉讼,因为他们自己心里非常清楚有没有把他们自己实现MIPS指令的核心技术传授或转让给了“龙芯”人,如果有,那我想就不是指控“龙芯”侵权,而是直接追讨违约金了;当然MIPS指令集是公开的,即使不公开,从编译器源代码中也是可以读出来的;所以,我们可以想象:“龙芯”团队的设计师们埋头先从公开的资料中整理了一套完整的MIPS指令集,然后搭起了巨型逻辑电路,凭借自己的思路和方法,使用枯燥的硬件描述语言,经过无数个不眠之夜,克服重重困难,付出无数心血和汗水,最终一步一步实现了所有这些指令集;而后流片,设计全功能开发板,调试,最后做成系列产品,并且拿到实际生活中去检验测试;而一旦所有这些都取得成功之后,“龙芯”又尊重事实,与MIPS公司签署购买其MIPS32和MIPS64架构指令集专利的合约,这何尝不是我们对国外优秀文化与先进技术的一种尊重和包容、一种负责任态度!这不正体现了“龙芯”团队成功之后的潇洒与从容吗!我们向来不吝啬把自己优秀的东西传播出去,我们也从不拒绝接纳国外优秀的东西,只要他们愿真心实意地给我们!
“龙芯”无疑是成功了,“高度决定风度”,我本以为已经站到高处的“龙芯”不会也不必理会脚下那些无聊者所发出的奇怪的声音,但是,为了抚慰广大民众特别是象10多年前的我一样的“愣头青”们的民族情感,也为了端正视听,中科院计算所的领导和“龙芯”总设计师亲自出面详细说明了事情原委和真相,我们又从中看到了“龙芯”人对国民的责任感和对青年的关爱!俗话说,“不怕没好事,就怕没好人”,不管是国内还是国外,总有那么一撮人,他们见不得中国发展壮大,见不得中国成功,中国每取得一点成绩,都像是冲了他们的肺管,总要出来苍白地咳嗽几声;他们就像是为着雄狮乱飞的苍蝇,每当雄狮奔跑途中或拼搏过程中不小心擦破了皮,它们就立刻飞过去在上面叮咬几口,以求苟延残喘。对于那些有丰富社会阅历,有一定知识背景,能够辨别真伪的成熟者来说,这些人的杂音是根本起不到任何效果的,但是它们对那些眼高手低,胸怀报国志,却没有多少能力和经验的“愤青”来说,却有极大的感染力和杀伤力;在我看来,“愤青”们要想抵制这些噪音,首先应该成为“奋青”,趁着年青,努力奋斗,刻苦钻研,锻炼作业技能,提高综合素质,注重实践,积累经验,不断增强明辨是非、区分良莠、独立思考和分析问题的能力;“愤青”身上的青涩会随着他们奋斗里程的延伸而渐渐褪去,他们终将尝到成熟果实的甘甜,那时,他们将百毒不侵!
不久前,当我从中科院计算所拿到“龙芯”系列完整资料时,我就得知“龙芯三号”将于明年初面世,“龙芯三号”是4核通用处理器,主频高达1GHz,另外相同主频的嵌入式版本处理器也将同步推出;时隔才一个多月,没想到这么快就看到“龙芯”签约MIPS的消息,如果我没猜错的话,那么“龙芯三号”国产多核处理器离我们越来越近了!同一体系架构同时推出通用型和嵌入式处理器的目前国际上有几家?呵呵,这好像应了我书中的一句话!
有一些ARM芯片厂商生产的ARM处理器,如果你仔细观察可以看到芯片是分为中心和外围两部分的,中心部分就是他们从ARM公司买来的核(Core),不只是指令集,还包括整个核的硬件实现都是ARM公司的,而各厂商自己只是在核的周围另外添加了一些外设控制器,然后再重新封装成一个完整的ARM芯片;或许不久的将来,你会看到很多类似的芯片,只是中心部分换成了“龙芯”的核,而外围则是其它公司各自添加的一些部件,那时,你可不要感到奇怪哦!
“无论什么情况下,无论何时何地”,我们都是“龙芯”最坚定的拥趸!我们相信,成功后的“龙芯”将更加伸缩自如、张弛有度、游刃有余!