龙芯FAQ

时间:2007-04-29
龙芯FAQ
唐志敏
2003/8/15
Version 1.0

1.缘起
2.关于龙芯的自主知识产权
2.1.龙芯为什么不采用一套自己设计的指令系统?
2.2.用成熟的指令系统,会不会侵犯别人的知识产权呢?
2.3.兼容别人的指令系统,是不是就没有自主知识产权?
2.4.龙芯为什么不提完全自主知识产权?
2.5.龙芯的知识产权策略是什么样的?
2.6.有媒体报道,“龙芯CPU研发过程中也借鉴利用了英国一家芯片设计公司以及台湾威盛的技术”,这是否违背“拥有自主产权”的宣传口号?
2.7.有人认为,所有CPU厂商公布的CPU指令系统均不是全集,而是整个指令系统的子集。如果这个说法成立,兼容现有的指令系统,会不会留下安全隐患(比如后门)?
3.关于龙芯的发展策略
3.1.龙芯的目标是挑战INTEL的奔腾吗?
3.2.研制一款CPU芯片,国外大公司都投数亿甚至数十亿美元。龙芯才投了几千万就做出来了,这是真的吗?
3.3.龙芯1号的主频才200多兆,不仅比国外的CPU芯片低得多,甚至也不如一些国内的CPU芯片。难道这就是龙芯的高性能吗?
3.4.龙芯是通用CPU,还是嵌入式CPU?
3.5.龙芯有可能兼容X86系列并支持WINDOWS操作系统吗?
3.6.龙芯现在才200多兆,何时才能赶上世界先进水平?
4.关于龙芯1号及其应用
4.1.龙芯1号是主要特点是什么?
4.2.龙芯1号通过了哪些测试?
4.3.龙芯1号支持哪些操作系统?
4.4.INTEL的CPU已做到2000多兆,龙芯1号才200多兆。200多兆的龙芯能用来做什么?
4.5.龙芯1号以后,龙芯系列将如何发展?
5.后记



1. 缘起
2002年9月28日龙芯1号CPU芯片的发布在包括Internet在内的多种媒体上引起了较大的反响,其中鼓励、赞赏和支持的较多,但也有一部分是怀疑、质疑甚至反对的。当时曾收集了一些网友和记者们关于龙芯的疑问,想逐一作答,澄清一些事实,但又有顾虑。因为媒体上的发言,跟我们平日做了研究后发表的学术论文很不一样。学术论文是有多位同行审稿把关后才发表的,一般不会有大的问题,即使有疑问,跟作者讨论时,双方都有许多共识及比较好的讨论基础。而媒体上的作者,从事行业、背景、兴趣等都各不相同,有些问题还真不易解释清楚。正好李国杰院士的“研制龙芯CPU的战略思考”论述了龙芯系列的发展战略,胡伟武博士的“我们的龙芯1号”介绍了芯片的研发过程,我也写了一篇“也谈如何发展中国的CPU芯片”,基本上可以回答大部分的质疑,我再写一篇文章的想法就被“行胜于言”的念头打消了,等待着用龙芯后续芯片的研发和产业化的成功来证明一切。

目前,龙芯1号已经量产,基于龙芯1号的网络计算机和其它产品也开始面市并得到应用,性能数倍于龙芯1号的龙芯2号已进行首次流片,可以说,龙芯系列无论在产业化方面还是在技术突破方面,都一直保持着快速和稳定的节奏。但是,前面提到的一些质疑,仍然在某些范围内流传着,并有可能对龙芯产业化的深入和后续的研发工作,产生不利的影响。面对这样的形势,虽然我不想做“光说不练”的“花把式”,却也不能甘当“光练不说”的“傻把式”了。

于是,就模仿Internet上惯用的做法,写了这个FAQ,希望能够澄清一些疑问或误解。


2. 关于龙芯的自主知识产权
2.1. 龙芯为什么不采用一套自己设计的指令系统?
基于自行设计的指令系统设计CPU芯片是比较容易的,但它的应用面太窄,极可能因为没有足够多的应用支持而夭折。

设计自己的指令系统并不难,难的是让它成为被业界接受的行业标准或事实标准,拥有一大批基于该指令系统的应用软件。设计自己的指令系统,计算所应该是有传统、有基础的。从早期的107、109,以及119、013,到大型向量计算机757和KJ-8920,都是根据应用的需要,自行设计的指令系统。这种做法在当时主要目标是完成国家科研任务,有配套的项目开发专用的应用软件,每种机器只研制几套,不追求市场化的情况下,效果是好的。但今天我们研制CPU芯片,绝不是只针对一种或几种应用,绝不是只管三年五年,而是希望它有上百万数千万的用量,能持续稳定地在激烈的市场竞争中生存发展下去。这种情况下,就不得不考虑我们的CPU如何方便各种各样的应用开发的问题。

事实上,在现代信息系统中,软件的成本已远远高于硬件。自行设计指令系统,意味着所有成熟的应用软件都不能立即在基于该指令系统的CPU上运行,必然导致在软件开发和应用移植方面的大量投入,而这样的投入,即使对每年有数百亿美元收入的国际大企业,也是不一定能负担的。上世纪90年代初期,DEC公司投入20亿美元开发了不兼容其原有的VAX系列小型机的Alpha指令系统和系列芯片。业界没有人不佩服Alpha的精妙设计和卓越性能,但软件问题终于导致DEC陷入困境并被Compaq购并。芯片业的巨头Intel联合HP公司从1994年开始开发与奔腾系列不兼容的IA-64指令系统和安腾系列芯片,至今还没有被用户广泛接受,这也说明了从头搞一套指令系统,要想真正成功,是何等的困难。


2.2. 用成熟的指令系统,会不会侵犯别人的知识产权呢?
简单地说会,或不会,都是不准确的。这个问题需要仔细分析。事实上,用自己的指令系统设计CPU芯片,也是有可能侵犯别人的知识产权的。

兼容别人的指令系统会导致知识产权纠纷,这可能是前些年Intel与AMD和VIA(威盛)频频打官司给大家带来的负面印象。其实,这些诉讼的焦点,并不在IA-32(或x86)指令系统的使用上,而是在一些与CPU芯片的外围总线接口有关的方面。

知识产权包括著作权(版权)、商标权、权等许多形式。就设计一款CPU芯片而言,可能涉及到已有知识产权的地方包括:指令系统可能涉及著作权或商标权,指令的实现方式可能涉及权,功能部件的组织结构、控制方式和电路实现可能涉及权,等等。其中,权的数量是多的(据初步估计,与CPU相关的美国就有五万余项)。由此可见,即使采用自己设计的指令系统,在具体实现的时候,也是有可能侵犯已有的技术的。

各种已有的知识产权是人类思想宝库的重要组成部分。我们应该合理合法地利用它们,而不是把它们视为拦路虎,想方设法地兜个大圈子绕过去。例如,SUN公司的SPARC指令系统,只需要付99美元就可以获得许可。花99美元,就可以免去开发一大堆软件的困难,何乐而不为呢?


2.3. 兼容别人的指令系统,是不是就没有自主知识产权?
不是的。在保持指令系统兼容的前提下,仍然可形成自主的知识产权。AMD和威盛(VIA)的CPU芯片虽然都兼容Intel的x86指令系统,但各自都拥有大量自主的技术,就是一个明显的例子。试想,如果没有自主知识产权,这两家公司凭什么跟Intel竞争?

事实上,同一个指令系统,可以有许多不同的实现方法,实现上的创新空间非常大。这里的每一项创新,都可能产生一项或多项技术。计算所在设计龙芯CPU的过程中,已申请发明12项,从微体系结构、C语言模拟器、RTL代码到芯片的版图,都有自己的知识产权。


2.4. 龙芯为什么不提完全自主知识产权?
答案很简单:既不可能,也没有必要。

研制CPU芯片是一项系统工程,涉及到从应用软件到半导体工艺的方方面面。以为自己设计一套指令系统,就可以掌握完全自主的知识产权,想得也未免天真了一点。

首先,用自己设计的指令系统,编译器怎么办,操作系统系统办?也许你会说,用Linux,用GCC,这些都是开放源码的,改一下就行了。开放源码是不错,可以使用目前也是对的,但知识产权却不是你自己的,何谈完全自主呢?

其次,设计CPU芯片,免不了要仿真验证,要布局布线。这方面前人做了大量的工作,大部分行之有效的算法都已形成,集成在各种商用的EDA软件里。没有人否认购买EDA软件的必要性,但很少有人意识到,使用EDA软件设计CPU芯片,本身就意味着已经在使用别人的大量技术。

再次,现在的CPU芯片,集成了上百万甚至数千万的晶体管,复杂度极高,要想从一个个孤立的晶体管开始,码出完整的CPU芯片来,不知要耗废多少人力物力,等到驴年马月!所以,都得借助EDA软件,以大小不一的各种单元为基础,开始搭积木。这类积木块包括基本单元、宏单元及其它知识产权(IP)模块等,大多是由代工厂(Foundry)、元件商或其它公司提供的,设计中一旦采用,完全自主的知识产权就无从谈起了。锁相环(PLL,使CPU内频数倍于外频的专用电路)就是一个典型例子,它是一个完全根据代工厂的半导体工艺设计的模拟电路,一般由代工厂作为IP模块提供。可以说,使用了代工厂提供的PLL(或其它IP模块)设计出的芯片,不可能是完全自主知识产权的。

在芯片设计过程中不可避免地要用到别人的知识产权的例子还很多。利用开放源码运动带来的许多IP是理直气壮的,花一定的代价取得高质量IP的使用许可也是理直气壮的。CPU芯片是否成功,既取决于其性价比,也取决于其上市时间,而这两个方面的要求,都不允许我们追求所谓的完全自主知识产权。


2.5. 龙芯的知识产权策略是什么样的?
龙芯的知识产权策略是:努力创造自主的知识产权,合法利用他人的知识产权。

自主知识产权是芯片增值的关键,也是龙芯系列芯片在市场上取得成功的关键。龙芯在研发的过程中,一直非常看重技术上的创新,并及时把创新的设计和方法用等形式的知识产权表达出来。到目前为止,围绕龙芯的研制,已申请了12项发明。

同样,也是基于在市场上取得成功的考虑,龙芯并不追求完全自主的知识产权。一些方便用户的特性、便于应用开发的特性、有助于改善性能价格比的技术,即使涉及他人拥有的知识产权,也并不一定要用重新开发的方式去规避。重新开发很可能会增大成本、延长上市时间。花一定代价取得专有技术的使用许可,效果往往更好。


2.6. 有媒体报道,“龙芯CPU研发过程中也借鉴利用了英国一家芯片设计公司以及台湾威盛的技术”,这是否违背“拥有自主产权”的宣传口号?
我读过这篇让我哭笑不得的文章,看来我和我的同事们一定要花大力气做好科普工作。文章中提及,上述“借鉴利用”事宜,是我本人“在(龙芯1号)发布前的小型媒体见面会上透露”的。我印象里,文章的作者并未出席那次会议,可能是传话中出了较大的误差。我那天在会上,只是告诉大家,与龙芯1号配套的主板上,用了英国一家公司的北桥芯片和台湾威盛的南桥芯片。北桥芯片和南桥芯片在功能上与CPU芯片没有重叠的地方,所以借鉴的说法,纯属误会。


2.7. 有人认为,所有CPU厂商公布的CPU指令系统均不是全集,而是整个指令系统的子集。如果这个说法成立,兼容现有的指令系统,会不会留下安全隐患(比如后门)?
这个顾虑是多余的。

我们说兼容某种指令系统,指的是与该指令系统公开的内容相兼容。某款CPU的指令系统全集里即使有不公开的内容,也只是留给内部使用的,正常的应用软件不会使用这类不公开的指令。所以,兼容公开的部分,就可以保证应用软件的二进制兼容性,且不会受到不公开的指令影响。


3. 关于龙芯的发展策略
3.1. 龙芯的目标是挑战Intel的奔腾吗?
不是。

Intel公司生产的CPU芯片在PC市场上占据了垄断地位,使“奔腾”在许多人心目中成为CPU芯片的代名词。其实,CPU的种类很多,使用CPU的地方也不仅仅限于PC机。

从未来的市场看,更是如此。随着后PC时代的来临,传统PC在人们工作和生活中的地位将逐步降低,并被各种易用或便携的信息处理终端所代替。高功耗、高主频的奔腾类芯片,并不适合这样的应用模式。所以Intel自己也在改变,转向移动,转向网络。
作为进入CPU市场的新的一员,龙芯不能只盯着当前已被瓜分贻尽的市场份额,而是应该根据未来应用发展的需要,开辟新的缰域。只有这样,才能站在巨人的肩膀上,达到后来居上的目标。


3.2. 研制一款CPU芯片,国外大公司都投数亿甚至数十亿美元。龙芯才投了几千万就做出来了,这是真的吗?
真是自己做的。不是买了现成的CPU核送到代工厂加工的,也不是从网上的,更不是买人家的芯片打磨的。

IBM和Intel这样的公司研制一款新的CPU芯片,确实是花很多资金的。但这些资金主要不是花在芯片设计上,而是用在建立芯片的生产线上。因为它们都是传统的IDM(integrated device manufacturer)厂商,独立承担从芯片设计到生产的完整过程。

从上世纪90年代开始,半导体行业的产业链发生了很大的变化,IDM越来越少了,也越来越难以维持了。目前半导体行业的水平划分和化非常清晰,做设计的公司不管生产(称为Fabless),有专门的代工厂(称为foundry)提供生产服务,封装和测试也是独立的。在这样的环境里,从事芯片设计,不再跟集成电路生产线的建设绑在一起,从而具有更大的灵活性和可行性,也为我们切入这个行业创造了难得的“机遇窗口”。

龙芯1号就是在这样的环境下设计并生产出来的。设计主要靠的是EDA工作站、EDA软件和人力。找代工厂生产芯片,在付了掩模费后,就可以用1000多美元的单价买圆片了。建一条生产线,要花10多亿美元,但这个钱不用我们来出。

正是因为这样,Fabless的设计公司提供的芯片,比IDM设计生产的芯片,更具价格优势。


3.3. 龙芯1号的主频才200多兆,不仅比国外的CPU芯片低得多,甚至也不如一些国内的CPU芯片。难道这就是龙芯的高性能吗?
主频只是决定性能的一个方面,主频高了,还有许多不利因素。

奔腾系列的主频不断提升,使大家认识到了主频的重要性。但不知你注意到没有,Intel现在不再像以前那样,宣传高主频的优势了。因为它新推出的用于服务器的安腾系列芯片和用于笔记本电脑的讯驰芯片,虽然性能更高,主频却远远不如奔腾。

衡量CPU性能的主要指标,是它完成一个任务所需要的时间。时间越短,性能越高。而任务完成时间的缩短,不仅依赖于CPU主频的提高,而且依赖于CPU在每个时钟节拍里,能够完成多少工作(例如:是一拍完成一条指令,还是一拍完成多条指令),以及能够完成一些什么样的工作(例如:是只能做定点运算,还是同时能做浮点运算)。

通过体系结构上的优化设计,以较低的主频达到更高的性能,是合适的。因为主频高了,有很多副作用,其中严重的是功耗剧烈增加(功耗正比于频率的三次方)。功耗增加的直接后果就是芯片和系统的可靠性受到影响,以及由于散热通风带来的设计复杂性提高和成本增加。


3.4. 龙芯是通用CPU,还是嵌入式CPU?
龙芯是通用CPU。

其实,通用CPU和嵌入式CPU只是CPU用于不同场合时的不同称呼,并没有结构上的本质区别。通用CPU既然是通用的,自然也可以用在嵌入式的场合。Intel的486、奔腾系列,既可以用来做PC和服务器,也可以用去做单板机和工控机,就是一个典型的例子。IBM的PowerPC系列,既有做服务器、工作站的,也有做交换机、路由器、游戏机的。MIPS系列也是如此。

与专门针对嵌入式应用而设计的嵌入式CPU(如ARM系列)相比,通用CPU对不同类型(高中低端)应用的适应能力更强,应用范围也更广。


3.5. 龙芯有可能兼容x86系列并支持Windows操作系统吗?
目前暂无计划实现与x86的二进制兼容,但有计划支持一些常用的软件,其中也包括Windows平台上的软件。

用户关心的是应用软件,而不是指令系统。与x86二进制兼容是支持Windows平台上应用软件的一种方式,但不是的方式。我们目前研究中的二进制编译技术,也是一种可行的方式。一年以后,随着龙芯2号系列芯片的推出和二进制编译技术的成熟,支持Windows平台上的应用是可以实现的。

当然,Windows操作系统和它支持的许多应用软件都是很贵的,有可能比硬件本身还贵。所以,龙芯支持的还是Linux平台。龙芯2号的种应用模式,就是Linux PC。


3.6. 龙芯现在才200多兆,何时才能赶上世界先进水平?
正象CPU有好多种类型一样,CPU的水平,也有多种不同的衡量尺度:Intel芯片的高主频,IBM芯片的高性能,ARM和TI的低功耗,分别展现了它们各自的长处和特色。但是,这些特色代表的只是当前的水平,适应的是当前的应用。未来的应用会有新的特征,需要用新的结构去支持,需要有新的指标去衡量。

CPU芯片是一种半导体器件,它的设计需要许多与半导体工艺相关的知识和经验。在这个方面,目前我们与世界先进水平的差距是较大的。好在这方面的技术已经成熟,我们只是从业时间较短,经验积累不足而已。因此,随着工作的深入,我们完全可以在未来的一两年内,在设计能力上达到国际先进水平。

CPU芯片又不纯粹是一种半导体器件。作为信息处理系统的重要部分,CPU的结构必须根据应用来设计,具有适合应用需求的性能特征。当前,信息系统的应用模式正在发生巨大的变化,现在看来性能价格比的结构,在将来未必具有优势。为了设计满足未来应用需求的CPU芯片,设计者必须有很强的系统背景和对应用需求的把握能力,而这正是我们的优势所在。


4. 关于龙芯1号及其应用
4.1. 龙芯1号是主要特点是什么?
龙芯1号有四大特点:兼容、安全、低功耗、高性能。
, 龙芯1号兼容MIPS指令系统,有一堆成熟的系统软件和应用软件可以直接在龙芯1号上运行。
第二, 龙芯1号内部设有硬件安全装置,可以抵御一大类基于缓冲区溢出的网络攻击行为。
第三, 龙芯1号在全速运行时,功耗不超过1瓦,不需要使用散热片和风扇。基于龙芯1号的应用系统稳定可靠,可工作于无人值守的场合。
第四, 龙芯1号配备了全流水的64位浮点部件,每秒可完成2亿多个双浮点运算。这个特性对工业控制等需要强大的实时计算能力的应用尤其合适。


4.2. 龙芯1号通过了哪些测试?
除了由开发者实施的大量性能和功能测试外,还通过第三方对龙芯1号进行了性能测试、动静态特性测试和温度测试。

SPEC CPU2000是评测CPU性能的权威的基准程序。龙芯1号是款通过该项基准程序测试的国产CPU芯片。

在IC测试台上对龙芯1号进行了动态和静态功能和特性的测试,结果表明,龙芯1号的合格率超过90%。已根据测试结果,编制龙芯1号的数据手册(datasheet)。

对安装了龙芯1号CPU芯片的样机系统进行的温度试验表明,该系统能在摄氏-35度到70度间工作,温度范围很宽,满足工业级应用的要求。


4.3. 龙芯1号支持哪些操作系统?
龙芯1号目前支持各种版本的Linux操作系统,包括国内品牌的(如红旗)和国外品牌的(如红帽子)。龙芯1号也支持多种国产的嵌入式操作系统,如Hopen等。

在工业控制领域,龙芯1号支持VxWorks实时操作系统。


4.4. Intel的CPU已做到2000多兆,龙芯1号才200多兆。200多兆的龙芯能用来做什么?
主频既不是决定性能的因素,更不是决定应用的主要因素。市场上卖的CPU,主频从几兆到几千兆都有,各有各的用途。前几天看到一个手机广告,介绍它采用了66兆的高主频CPU,可支持这样那样的复杂功能。估计这个CPU里还没有浮点运算部件。所以,一款200多兆主频、支持浮点运算的CPU芯片,还是大有用武之地的。

基于龙芯1号,已经开发的产品包括:面向安全应用的刀片式服务器、网络隔离卡、智能网卡,网络终端机(NC)、税控机等终端类设备,工业控制计算机,等等。


4.5. 龙芯1号以后,龙芯系列将如何发展?
龙芯1号的成功树立了龙芯的品牌。在加强龙芯1号应用推广的同时,我们会继续从广和高两个方面,不断开发适合不同应用需要的系列芯片。

广的方面,进一步优化龙芯1号,形成单发射、双发射、含浮点部件、含多媒体部件等多种不同特点的32位CPU内核,进而针对后PC客户端设备、移动终端、家庭数字应用和网络应用,开发相应的SOC芯片。

高的方面,将研制64位的多发射、多线程龙芯2号通用CPU芯片系列,用于桌面办公、网络服务器、媒体服务器等产品的开发。


5. 后记
这个FAQ也许只能称为是第1.0版。许多相关的问题还没有涉及,对有些问题的回答也未必十分妥贴。随着龙芯科研工作和市场推广的进一步展开,肯定还会有更多的问题提出来,需要释疑,需要宣传。我和我的同事们会尽力维护并不断地更新它的。

孔子在《论语》里说:“人不知而不愠,不亦君子乎?”。 人家不理解你的时候,总忍不住要去辩解几句,看来做君子真的很难呢。莫非做CPU跟做学问不太一样,还是自己的修为真的不够?

不过,我还是相信:事实胜于雄辩。随着龙芯系列芯片的不断推出、龙芯应用的不断普及,本文面对的质疑都会烟消云散。当然,关于龙芯的FAQ还是会存在的,只是它的内容会更技术化、更针对应用,而不是象现在这样,花大部分篇幅讲发展策略。

其实这一天已经为期不远了。


  
上一篇:实用微型功放制作
下一篇:Protel DXP 指导教程(一)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料