我所了解的龙芯,关于龙芯争论的总结ZT

昨天看变形金刚2去了,原本实在是懒的花时间来科普老道这外行,其实自己先摆正心态,在网上好好搜搜都有。无奈他就知道一味的攻击我,看来不写点东西是过不去了。

  既然你的贴里提到君正,那我先来说说她。

  君正是不错的一个公司,06年回国的时候去看过。公司在北京城铁10号线西二旗站,刘姓创始人是科学院的博士,从前在北美日立半导体公司中国设计中心工作。当时这家公司有很大的问题,其实是一个叫李德雷的人在北京办的一个民营企业,李本人在美国日立工作。他匡来自己老板到中国来投资,但把资投到自己的公司了,所以李的公司的项目资金全从日立来,但企业的所有权却不归日立。所以当时就是顶了块日立的牌子的接日立的外包项目。日立外包出来的都是核心项目。当时有好几个项目,其中之一是SH5DSP,也就是日立的下一代处理器设计。而刘在里面负责编译器的研制,很得李德雷的赏识。后来日立认识到公司的问题,和这个公司切断了联系。公司在京城已算是小有名气,得到很多的支持。倪光南是一个,倪帮助李找来了风投,成立了新公司。新公司刚开始叫中芯 sinocore,仍然是原班人马,原先的办公地点。后来改名叫方舟科技,刘是总经理,李是董事长。刘把原先做SH5的人都遣散了,换上自己作编译器的人马作IC设计。刘是个技术狂,他认为软硬件技术都是相通的。这没错。我曾问他想不想要我从国外推荐的人,他婉言谢绝。因为他认为没什么技术是不能学到的,花大钱请国外的人是浪费。他跟我说,处理器的后端设计包括版图,place and route都是他们自己培训人作的。我对他的观点十分认同和赞赏。后来的事情大概大家都知道,李德雷做出来方舟处理器拿了很多国家的钱却改主意了。改去作小灵通,因为李认为CPU在中国赚不到钱。李和倪和刘就此掰了,因为后两者是技术型的,不做核心技术是不能容忍的。刘离开方舟后,拉了几个方舟的技术骨干,找了笔钱做起了君正。06年我到其公司参观,总共也就20来个人。刘是头,很忙,给我演示了一下他们的产品。他们做了个类似PDA的东西,上面已经十分顺畅的跑起LINUX了,印象深刻。他的办公室里堆满了处理器方面的技术书籍。他告诉我他们用的MIPS指令集,当我问起专利时,他笑笑说专利20 年,MIPS已经到期了(我想他指的不包括MIPS的后来几条指令的专利)。我又问了一个我一直好奇的问题,IC设计的EDA软件都十分昂贵,你们怎么用的?

  后来,我曾跟我一个在一家媒体做主编的朋友淡起这家还小的公司。这位主编和倪光南也很熟悉,希望能采访刘。我跟刘联系了下,刘表示他愿意和主编建立私人关系,但目前公司还不愿意在媒体上暴光,所以就不采访了。

  君正的MIPS CPU的市场目标是嵌入式,这和龙芯不一样。龙芯是国内目前唯一推出台式机正面同微软英特儿较量的。当然不是一个量级的。但精神可嘉。如果因为龙芯购买了 MIPS的兼容授权就否定龙芯的意义是不妥当的。如果君正想开拓海外市场,想在自己的芯片上打上MIPS兼容的LABEL,那么很有可能君正也要购买 MIPS的结构专利。这点在胡的文章里讲的很清楚了。是不是自己的技术要看买的是什么东西,如果买的是MIPS的软核硬核,那完全就是别人的东西了。但龙芯是自己开发的RTL做的后端设计,也就是说,龙芯自己销售自己研发的软核硬核。

  附带说明一下啥叫软核,软核就是经过逻辑验证的RTL代码。数字硬件设计和软件类似,都用编程语言编写出来的,不过硬件多用VERILOG, VHDL。特点是语言本身是并发性的,对软件工程师来说写硬件代码这是一个要转换的思维,因为软件语言多是顺序串行的。刘是作编译器的,他们居然用C来写硬件设计,因为他们自己开发了一个工具把C转换成VERILOG。RTL经过验证后就可以当软核卖了,可用于FPGA验证,如果你的产品就想用FPGA那么也就妥了。但更多的是要流片的。RTL仅是芯片的逻辑描述, 流片是要形成真正可工作的晶体管电路。那就要作后端的设计(逻辑综合,布线布局,等),这是很关键的一步。我目前的东家是美国乃至全球半导体业界数得上的,我们这个部门专门有两个组,一个是前端设计,另一个是专门的后端设计组。经过逻辑综合后的东西就算是硬核了。对于一个CPU设计来说前端后端都很重要。RTL的设计决定大的架构和算法。算法的优化往往更具决定性尤其对CPU这样的高度复杂的东西。而后端的物理设计要面对的问题却是更难以把握的需要更多的经验。比如说时钟树的生成和布局,如果时钟信号到达不同电路的时间是不一样的,就会出错。而为了达到最高的性能,又不能把时钟信号的要求放的过宽。这仅是一个后端设计要考虑的问题例子而已。这也就是为啥,很多人听说国内的CPU设计用FPGA就马上跳出来大加嘲笑的原因。因为FPGA需要的仅是软核,完全没有后端的物理设计。但你别忘了,就算是INTEL做CPU也要经过FPGA验证这一步啊,先验证逻辑是对的然后再做后端的物理设计。饭总要一口一口吃的。再说RTL软核也是可以卖钱的,比如我们公司买ARM的软核,后端全部是自己做的,也不用流片厂提供的标准库。

  龙芯是走了RTL设计到物理定制的整个过程的。龙芯1解决的是有没有的问题。同时代的汉芯,北大众志,方舟,不是被证明为骗局,要不就夭折,要不就悄无声息了。后来又出来的君正等等,应该算是后起之秀。龙芯2对于1来说就是一个飞跃,业界先进的CPU设计技术被利用上了。4发射,指令动态调度执行,对于INTEL CPU来说这也是到PIII才应用上的。而龙芯2是龙芯的第2代产品而已。当然,我不是说INTEL不行,只是后来者也有后来者的优势。可以利用最先进的技术。虽然这些技术并非龙芯首创,都是有很多论文和被实践证明是可行的技术,但龙芯之前我们没有,龙芯把它给实现了。我们应该看到龙芯从技术上追赶的是很快的。我的意思是说虽然不是首创,但赶上了,这就是成就。再说后端的物理设计,龙芯2实现了手工布局,手工标准单元库的优化,为了降低延迟,龙芯2在关键路径(延迟最长的电路路径)实现了手工优化,并利用了clock skew技术实现clock borrow(把下一级流水的时钟延迟借用到上一级来节省时间)。参考[计算机研究于发展,ISSN 1000-1239/CN 11-1777/TP 龙芯2号处理器设计和性能分析] 龙芯2号完成了综合,布线布局,单元库优化和芯片版图设计,从RTL逻辑验证成功到流片成功并达到性能要求是很大的一步。为了给大家一个感性的认识,一个芯片完成物理设计后是什么样子,这有一张芯片版图,是我小组VLSI课上因最低功耗而获得全班第一课程设计。这是一个具有8位加法和移位功能,工作在 90MHz的算术运算单元。

  



  版图就是一个芯片在硅片上真正的样子,获得版图后就可以拿到流片厂去流片了。当然不是说流完片就万事大吉了,片子回来后要用芯片中设计时内建的扫描链进行大规模的测试,有时候发现问题还要定位出问题的门电路,然后把片子切开用扫描隧道显微镜观察究竟是设计问题还是流片厂的工艺问题。我们公司有专门一组人干这个的。在芯片设计中这叫DFT(DESIGN FOR TESTING)。而DFT的专利是购买另一家美国公司的。所以说在芯片行业购买他人专利用于自己的产品是在是太常见了,不是说一买他人的专利自己的产品就不是自主开发了。只有爱起哄的外行才这么去理解。

  上面说了龙芯的设计,再略讲一下指令集的事情。一个CPU的指令集不过是CPU的对外接口,兼容别人的指令集不过是为了获得更大的用户群,但处理器本身还要自己设计制造才行(除非你也买了别人的软硬核)。打个比喻,你写一本剧本,你是用汉语还是英语,并不影响剧本情节本身,你要演出这部剧还是要写剧本请演员,导演花时间排练出来,然后只不过你是面对英语观众还是汉语观众来表演而已。CPU 的指令集是一个道理。同样的一套指令集,你技术不好实现出来的运行特慢还错误百出功耗特大,但其他人实现的就更优化,更省电,更快。这就是技术!包括 INTEL从PII/III开始其CPU内核也变成一个RISC核心了。外部的X86指令是首先被转换成内部的一条或多条RISC指令然后才被译码,调度执行的。AMD从K6开始也是如此。曾名震一时的美国全美达公司走的是另一条路子,他把X86指令用CPU内部的微程序进行翻译后执行(我没看出来这和 386有啥思想上的区别)。关于指令集已经解释的很清楚了,如果再不理解并拿出来说事只能是胡搅蛮缠要不就是智商太低。

  关于龙芯的设计基本上讲的差不多了,再加一句关于未来发展的话。INTEL发展到P4,之后的发展也是要朝多核化发展了。单核中能应用的提高性能的技术用的差不多了,比如多发射,超标量流水线,指令分支预测等。可提高的地方不大,并且一味的设计更复杂的单核,会引起功率密度过高的问题。因为单核过于复杂造成晶体管太多消耗太多的功率,但又希望DIE( 硅片)的面积小,这将必然提高功率密度(power density)。所以今后看来多核处理器是个趋势,也就是相对简单的单核,但一个DIE上集成更多的单核,那么总功率就是单核的线性关系,比复杂大单核要可控制的多。龙芯2已经在性能上赶上PIII和低端的P4(下面会讨论性能)。龙芯3将要作多核的处理器,INTEL也在这样做。从这一点看,龙芯其实在技术上距离INTEL的差距已经大大缩小了。这是值得欣慰的。当然市场上还差的很多。另外讲一句,其他几个国内的CPU设计公司(据我所知)多是针对嵌入式处理器,技术上比通用处理器还是差的比较远。我们公司当初选处理器的时候就考察过5,6个嵌入式处理器。做嵌入式处理器在国际上也是有很多公司的。比如我们公司使用的ARM7和ARM CM3,我看过其RTL源代码。技术相对来说是比较简单的,没啥多发射,指令调度之类的。但这当然不妨碍我们的产品几亿美元的赚钱,因为不同的技术应用于不同的领域。龙芯应该是国内唯一在通用处理器中奋斗的,其他几家的技术不太了解。如果我的猜测是正确的话(其他几家是仅做嵌入式),那么拿那几家同龙芯比不太合适。龙芯有做嵌入式应用的,更有桌面PC和服务器的应用,还计划用到高性能计算机上,这些奠定了龙芯的特殊意义,也是其最大的挑战。

  接下来说说龙芯的性能,这些数据网上到处都是。做个比较吧,比较的时候力争做到主频,工艺接近的比较。性能比较主要参考 SPEC CPU2000,这是通用测试程序,涵盖了各种计算,绘图,文字处理,EDA仿真应用,多媒体播放等。然后加上功耗比较,这是十分重要的,尤其在高性能计算方面,一台超级计算用成千上万的CPU,功耗绝对是个问题。

  先看一下下面这段话:

  “ 龙芯2号采用180nm的CMOS工艺制造,片上集成了1350万个晶体管,硅片面积6.2毫米×6.7毫米,最高频率为500MHz,功耗为3-5瓦。龙芯2号实现了先进的四发射超标量超流水结构,片内一级指令和数据高速缓存各64KB,片外二级高速缓存最多可达8MB。龙芯2号的SPEC CPU2000标准测试程序的实测性能是龙芯1号的8-10倍,是1.3GHz的威盛处理器的2倍,已达到相当于Pentium 3的水平。基于龙芯2号的Linux-PC系统可以满足绝大多数的桌面应用。

  龙芯2E是一款实现64位MIPSⅢ指令集的通用RISC处理器,采用90nm的CMOS工艺,布线层为七层铜金属,芯片晶体管数目为4700万,芯片面积6.8mm×5.2mm,最高工作频率为1GHz,典型工作频率为800MHz,实测功耗5-7瓦。龙芯2E具有片上128KB一级缓存、512KB二级缓存,单精度峰值浮点运算速度为80亿次/秒,双精度浮点运算速度为40亿次/秒,在1GHz主频下SPEC CPU2000的实测分值达到500分,综合性能已经达到高端Pentium Ⅲ以及中低端Pentium 4处理器的水平。”见原文

  这是龙芯官方网站的发布,注意0.18微米,500MHz,3-5瓦,但没明确说SPEC CPU2000的分值,第二段是0.09微米,1GHZ,5-7瓦,SPEC CPU2000是500分。

  下面是其他的CPU的数据:

  “ 一般来说,现在较流行的四发射的主流RISC处理器象Alpha21264、MIPSR12000、IBMPowerIII等在400MHz到 500MHz的情况下SPECCPU2000的分值可以达到300分左右,而PentiumIII在800MHz时SPECCPU2000的浮点分值才 200多分。”见原文

  我又去spec.org找到INTEL PIII/4的测试结果,如下图:

  



  数据来源

  从图中可见,PIII的几款主频上GHz的CPU分值都在500以下,P4的高一些。我们再看一下功耗。INTEL PIII TAPEOUT的比较早,较少用90纳米工艺流片的。那么我们就比较180纳米龙芯2和180纳米PIII的功耗。下图是从INTEL网上的截图,PIII 180纳米,500MHZ功耗为13.2瓦。

  



  数据来源

  CPU 的省电与否,如果你仅是家庭用户来上网炒股票是体会不出来的。像我这样24小时开机的就会有点不一样了。这AMD CPU风扇吹起来就会积累不少尘土,长时间的积累会导致主板的电气特性改变,短路等等。我的华硕主板基本上2年得洗一回,否则LINUX频繁死机,检查内存发现大量数据读写错。擦一边就好用个2年。如果是公司用户,大量的服务器罗起来,那噪音没法呆。我从前的东家有几台大型的集成电路仿真设备,半人多高的一个个长方体,在实验室里两台运行起来,我进去以为到了纺织厂。必须带耳罩,跟别人说话得喊。全是机器的风扇噪音,吹出来的热风扑面而来,时间长了一定得病。后来搬家了,到另一实验室,公司专门打了个隔音墙有一尺厚,里面塞满了隔音材料。墙对面放了三台机器,在墙上挖个洞把电缆拉出来。这样环境好多了,当然成本自然会上去的。如果拿龙芯做服务器集群,对公司用户来说从各方面来讲都能节省不少银子。

  通过这样的比较,龙芯的性能和功耗基本上有个大概的谱。首先是适合一定的商用需求,我本人仍然在用AMD 1.8GHZ的台式机,不玩游戏基本够用。INTEL P4是2000年出来的,如果说龙芯2和低端P4相当,龙芯2是2005年面世的,那么仅仅从CPU计算性能上讲落后5,6年。我认为这是个成就了,适当的宣传一下没什么不好。全美达当初不也宣传的很火嘛。至于说宣传方式的不同,你不喜欢是你的事,有人喜欢。

  另外值得一提的是,龙芯首创了防堆栈代码执行的技术并获得专利。网络安全的一个大问题就是软件中的缓冲区溢出问题。就是说一个函数不检查输入缓冲区的长度,使劲拷贝输入的数据。那么黑客可以将恶意代码扮作输入数据交给软件函数,此函数将超长的数据拷贝到自己的堆栈段,结果将返回地址给冲掉了。而储存在原先返回地址的值变成了黑客故意设计的返回值,但不返回到正常调用程序而返回到自己的恶意代码中。如果这个软件是个带SUID的程序,黑客的恶意代码就可以 SPAWN出一个ROOT SHELL。那么黑客就获得了系统管理员的权限。很多黑客就是成天读各种程序的源代码来找这样的”粗心“函数然后加以利用。龙芯的专利在于,他在CPU级别判断代码是否在堆栈区执行,如果是那么就拒绝执行。这样,这一大类的系统漏洞就不能被黑客所利用,提高了系统安全。这在其他CPU中还真没见到应用的。

  本来是懒得码那么字,被逼无奈,但相信问题已经讲清楚了,欢迎拍砖。另外,顺便说一下,俺不是做半导体的,我的专业是无线通讯,只是无线通讯跟半导体根本就分不开。总结一下,我还是那句话,我并不觉得CPU是啥尖端超难技术,不比航空发动机和大飞机,如果说半导体,我到觉得射频集成电路的设计和模数混合信号集成电路设计更加具有挑战性。但CPU确实是具有一定战略意义的产品商品,龙芯确实是自主开发并做到了满足一定商业应用的水平,龙芯确实是填补了我国没有通用处理器的空白,而对于龙芯购买MIPS结构授权的指责确实是外行扯谈,而用其他的嵌入式处理器同龙芯比较来贬低龙芯的技术是不妥当的,因为典型的通用处理器和典型的嵌入式处理器的复杂度是不一样的。记得君正的刘还在方舟时我跟他通过电话,他在电话里说,”做个PENTIUM出来不太容易,但作个嵌入式处理器是小意思“。呵呵,这话说的没错,全篇完!

登录后才可评论.