
| 出版日期:2003-08-11 总期号:1240 本年期号:59 |
|
有所为有所不为 中国“龙芯”要腾飞
唐志敏 编者按: 为了解决我国信息产业发展中的“芯”病,近几年来,龙芯、方舟等一批国产CPU横空出世。他们有的主攻通用方向,有的为NC量身定制,有的在嵌入式领域前景广阔。但由于种种原因,这些中国芯,从诞生之日起就处在舆论的中央:雀跃的有,怀疑的有,不屑的有,失望的有。等等这些,实际上集中到了我国究竟应该走什么样的IT核心技术研发路线上。在这个问题上,唐志敏老师,从亲力亲为中,给了我们一个答案,相信对读者会有所启发。 “龙芯”缘起 2002年9月28日龙芯1号CPU芯片的发布在包括Internet在内的多种媒体上引起了较大的反响。正好李国杰院士的《研制龙芯CPU的战略思考》一文论述了龙芯系列的发展战略,胡伟武博士发表的《我们的龙芯1号》介绍了芯片的研发过程,我也写了一篇《也谈如何发展中国的CPU芯片》,基本上可以回答大部分的质疑,我再写一篇文章的想法就被“行胜于言”的念头打消了,等待着用龙芯后续芯片的研发和产业化的成功来证明一切。 目前,龙芯1号已经量产,基于龙芯1号的网络计算机(NC)和其它产品也开始面市并得到应用,性能数倍于龙芯1号的龙芯2号已经进行了首次流片,即将在2004年问世。可以说,龙芯系列无论在产业化方面还是在核心技术突破方面,都一直保持着快速和稳定的节奏。
唐志敏,研究员、博士生导师。现任中科院计算所所长常务助理、系统结构室主任,兼任“十五”863计算机软硬件技术主题专家组成员、国家基金委计算机学科评审组成员、中国科学院研究生院信息科学与工程学院副院长、《计算机学报》执行副主编。目前担任中国科学院知识创新工程重大项目“高性能通用CPU芯片研制”首席科学家。 为什么不“从零做起” 首先要说明的一个问题是,基于自行设计的指令系统设计CPU芯片是比较容易的,但它的应用面太窄,极可能因为没有足够多的应用支持而夭折。 设计自己的指令系统并不难,难的是让它成为被业界接受的行业标准或事实标准,拥有一大批基于该指令系统的应用软件。这种情况下,就不得不考虑我们的CPU如何方便各种各样的应用开发的问题。 事实上,在现代信息系统中,软件的成本已远远高于硬件。自行设计指令系统,意味着所有成熟的应用软件都不能立即在基于该指令系统的CPU上运行,必然导致在软件开发和应用移植方面的大量投入,而这样的投入,即使对每年有数百亿美元收入的国际大企业,也是不一定能负担的。上世纪90年代初期,DEC公司投入20亿美元开发了不兼容其原有的VAX系列小型机的Alpha指令系统和系列芯片。业界没有人不佩服Alpha的精妙设计和卓越性能,但软件问题终于导致DEC陷入困境并被当时的Compaq公司购并。芯片业的巨头Intel联合HP公司从1994年开始开发与奔腾系列不兼容的IA-64指令系统和安腾系列芯片,至今还没有被用户广泛接受,这也说明了从头搞一套指令系统,要想真正成功,是何等的困难。 用成熟的指令系统,会不会侵犯别人的知识产权呢?事实上,用自己的指令系统设计CPU芯片,也是有可能侵犯别人的知识产权的。 各种已有的知识产权是人类思想宝库的重要组成部分。我们应该合理合法地利用它或用新的实现方法回避它,而不是把它们视为拦路虎,想方设法地兜个大圈子绕过去。我们要回避的已有专利的实现方法而不是指令系统本身。指令系统的商标权和许可费一般并不贵,例如,SUN公司著名的SPARC指令系统,只需要付99美元就可以获得许可。花99美元,就可以免去开发一大堆软件的困难,何乐而不为呢? 那么“龙芯”是否为完全自主知识产权?答案很简单:既不可能,也没有必要。 研制CPU芯片是一项系统工程,涉及到从应用软件到半导体工艺的方方面面。以为自己设计一套指令系统,就可以掌握完全自主的知识产权,想得也未免天真了一点。 首先,用自己设计的指令系统,编译器怎么办,操作系统系统办?也许你会说,用Linux,用GCC,这些都是开放源码的,改一下就行了。开放源码是不错,可以免费使用目前也是对的,但知识产权却不是你自己的,何谈完全自主呢? 其次,设计CPU芯片,免不了要仿真验证,要布局布线。这方面前人做了大量的工作,大部分行之有效的算法都已形成专利,集成在各种商用的EDA软件里。没有人否认购买EDA软件的必要性,但很少有人意识到,使用EDA软件设计CPU芯片,本身就意味着已经在使用别人的大量专利技术。 再次,现在的CPU芯片,集成了上百万甚至数千万的晶体管,复杂度极高,要想从一个个孤立的晶体管开始,做出完整的CPU芯片来,不知要耗废多少人力物力!所以,都得借助EDA软件,以大小不一的各种单元为基础,开始搭积木。CPU芯片是否成功,既取决于其性价比,也取决于其上市时间,而这两个方面的要求,都不允许我们追求所谓的完全自主知识产权。 “龙芯”的知识产权策略 龙芯的知识产权策略是:努力创造自主的知识产权,合法利用他人的知识产权。 实际上,在保持指令系统兼容的前提下,仍然可形成自主的知识产权。举个例子:AMD和威盛(VIA)的CPU芯片虽然都兼容Intel的x86指令系统,但各自都拥有大量自主的专利技术。试想,如果没有自主知识产权,这两家公司凭什么跟Intel竞争?事实上,同一个指令系统,可以有许多不同的实现方法。这里的每一项创新,都可能产生一项或多项专利技术。中科院计算所在设计龙芯CPU的过程中,已申请发明专利12项,从微体系结构、C语言模拟器、RTL代码到芯片的版图,都有自己的知识产权。 自主知识产权是芯片增值的关键,也是龙芯系列芯片在市场上取得成功的关键。 同样,也是基于在市场上取得成功的考虑,龙芯并不追求完全自主的知识产权。一些方便用户的特性、便于应用开发的特性、有助于改善性能价格比的技术,即使涉及他人拥有的知识产权,也并不一定要用重新开发的方式去回避。重新开发很可能会增大成本、延长上市时间。花一定代价取得专有技术的使用许可,效果往往更好。 关于“龙芯”是否会留下一些“后门”,其实这个顾虑是多余的。我们说兼容某种指令系统,指的是与该指令系统公开的内容相兼容。某款CPU的指令系统全集里即使有不公开的内容,也只是留给内部使用的,正常的应用软件不会使用这类不公开的指令。所以,兼容公开的部分,就可以保证应用软件的二进制兼容性,且不会受到不公开的指令影响。我们既然没有为不公开的指令留“后门,当然也不存在这方面的安全隐患。 还有一种较流行的观点:“做军用产品要求拥有完全自主知识产权”。这也许是一种误解。如果采用了别人的知识产权,只要能确保不影响安全性,为什么不能用于研制和生产军用产品。比如,MIPS指令系统中有4条保留指令,因其实现方法不能绕过而拥有专利。为了保证龙芯2与MIPS完全兼容,我们打算花一点专利费取得这4条保留指令的使用权。龙芯2的设计完全控制在我们手中,难道用了4条保留指令,知识产权不完全是自己的,龙芯2就不安全了吗? 几千万都花在点儿上 “龙芯”不是买了现成的CPU核送到代工厂加工的,也不是从网上下载的,更不是买人家的芯片打磨的。 IBM和Intel这样的公司研制一款新的CPU芯片,确实是花很多资金的。但这些资金主要不是花在芯片设计上,而是用在建立芯片的生产线上。目前半导体行业的水平划分和专业化非常清晰,从事芯片设计,不再跟集成电路生产线的建设绑在一起,从而具有更大的灵活性和可行性,也为我们切入这个行业创造了难得的“机遇窗口”。 龙芯1号就是在这样的环境下设计并生产出来的。设计主要靠的是EDA工作站、EDA软件和人力。找代工厂生产芯片,在付了掩模费后,就可以用1000多美元的单价买圆片了。建一条生产线,要花10多亿美元,但这个钱不用我们来出。正是因为这样,Fabless的设计公司提供的芯片,比IDM设计生产的芯片,更具价格优势。 龙芯1号还不能算高性能的CPU。主频只是决定性能的一个方面,主频高了,还有许多不利因素。 奔腾系列的主频不断提升,使大家认识到了主频的重要性。但不知大家是否注意到,Intel现在不再像以前那样,宣传高主频的优势了。因为它新推出的用于服务器的安腾系列芯片和用于笔记本电脑的迅驰芯片,虽然性能更高,主频却远远不如奔腾4。
龙芯1号(Godson) 衡量CPU性能的主要指标,是它完成一个任务所需要的时间。时间越短,性能越高。而任务完成时间的缩短,不仅依赖于CPU主频的提高,而且依赖于CPU在每个时钟节拍里,能够完成多少工作,以及能够完成一些什么样的工作(例如:是只能做定点运算,还是同时能做浮点运算)。 通过体系结构上的优化设计,以较低的主频达到更高的性能,是最合适的。因为主频高了,有很多副作用,其中最严重的是功耗剧烈增加。功耗增加的直接后果就是芯片和系统的可靠性受到影响,以及由于散热通风带来的设计复杂性提高和成本增加。当然龙芯CPU的主频也会逐步提高,龙芯2号的主频设计指标是500MHz,我们的努力方向是在相同的主频条件下性能要高于国外的芯片。 何时赶上世界先进水平 首先,龙芯是通用CPU。通用CPU和嵌入式CPU只是CPU用于不同场合时的不同称呼,并没有结构上的本质区别。Intel的486、奔腾系列,既可以用来做PC和服务器,也可以用去做单板机和工控机,就是一个典型的例子。与专门针对嵌入式应用而设计的嵌入式CPU(如ARM系列)相比,通用CPU对不同类型(高中低端)应用的适应能力更强,应用范围也更广。 目前“龙芯”虽暂无计划实现与x86的二进制兼容,但有计划支持一些常用的软件,其中也包括Windows平台上的软件。用户关心的是应用软件,而不是指令系统。随着龙芯2号系列芯片的推出和二进制编译技术的成熟,支持Windows平台上的应用是可以实现的。当然,Windows操作系统和它支持的许多应用软件有可能比硬件本身还贵。所以,龙芯首选支持的还是Linux平台。龙芯2号的第一种应用模式,就是Linux PC。 CPU芯片是一种半导体器件,它的设计需要许多与半导体工艺相关的专业知识和经验。随着工作的深入,我们完全可以在未来的一两年内,在设计能力上达到国际先进水平。为了设计满足未来应用需求的CPU芯片,设计者必须有很强的系统背景和对应用需求的把握能力,而这正是我们的优势所在。 在加强龙芯1号应用推广的同时,我们会继续从广和高两个方面,不断开发适合不同应用需要的系列芯片。 广的方面,进一步优化龙芯1号,形成单发射、双发射、含浮点部件、含多媒体部件等多种不同特点的32位CPU内核,进而针对后PC客户端设备、移动终端、家庭数字应用和网络应用,开发相应的SOC芯片。 高的方面,将研制64位的多发射、多线程龙芯2号通用CPU芯片系列,用于桌面办公、网络服务器、媒体服务器等产品的开发。 相关链接 龙芯1号主要技术特点及应用前景 龙芯1号有四大特点:兼容、安全、低功耗、有浮点运算部件。 第一, 龙芯1号兼容MIPS指令系统,有一堆已经成熟化的系统软件和应用软件可以直接在龙芯1号上运行。 第二, 龙芯1号内部设有硬件安全装置,可以抵御一大类基于缓冲区溢出的网络攻击行为。 第三, 龙芯1号在全速运行时,功耗不超过1瓦,不需要使用散热片和风扇。基于龙芯1号的应用系统稳定可靠,可工作于无人值守的场合。 第四, 龙芯1号具有全流水的64位浮点部件,每秒可完成2亿多个双精度浮点运算。这个特性对工业控制等需要强大的实时计算能力的应用尤其合适。 龙芯1号目前支持各种版本的Linux操作系统,包括国内的(如红旗)和国外的(如Redhat)。龙芯1号也支持多种国产的嵌入式操作系统,如Hopen等。在工业控制领域,龙芯1号支持VxWorks实时操作系统。 市场上卖的CPU,主频从几兆到几千兆都有,各有用途。目前在一些广告里,介绍手机已采用了66兆高主频CPU,可支持这样那样的复杂功能。所以,一款200多兆主频、支持浮点运算的CPU芯片,还是大有用武之地的。基于龙芯1号,已经开发的产品包括:面向安全应用的刀片式服务器、网络隔离卡、智能网卡,网络终端机(NC)、税控机等终端类设备、工业控制计算机,等等。 |
|||||||||||||||||||||||||||