龙芯CPU(11)–龙芯3号多核处理器设计及其挑战

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享

【编者注:这是胡伟武2007年9的一个技术报告,关于龙芯3的设计目标。有兴趣的读者可以发现,龙芯3号将把和谐的精神也融入到CPU设计当中。例如,“。。。龙芯3号一个目标要建设和谐的计算和谐,一个机机和谐,就是兼容问题。另外一个是人机和谐,。。。”】

很荣幸在计算机事业五十周年的时候有机会做这个报告,我的报告题目是龙芯3号多核处理器设计及其挑战。我报告还是涉及多核处理器的发展趋势,龙芯处理器总体情况,主要介绍一下龙芯3号设计目标和设计挑战。

让我说多核处理器的发展趋势,就一句话,就是处理器结构正处在转折期,主频至上的时代已经结束,摩尔定律关于主频部分的终结,晶体管资源还在增加,性能功耗比继性能价格比后成为重要的设计指标,网络和媒体的普及导致计算机应用的变化,处理器经历了简单到复杂,再到简单和复杂的过程。
摩尔定律不是性能定律,以前摩尔定律被赋予很多性能的含义,每1.5年性能提高一倍,摩尔定律真正含义是关于晶体管数目和晶体管开关速度的定律。Intel是摩尔定律的倡导者,根据Intel自己的资料,从486到奔四性能提高了 75倍,有13倍来自工艺的改进,6倍是来自结构的改进。每代微处理器最大的片内时钟频率是上代产品的两倍,其中1.4倍来源于器件按比例缩小,另外 1.4倍来源于流水级中逻辑门数目的减少,如180纳米时是32个等效F04的延迟,而在130纳米时只有26个F04的延迟。
晶体管反转延迟按比例缩小导致性能同步增长的趋势在130纳米时已经终止了。工作电压一直往下降也降不下去了。连线延迟的影响,随着工艺的提高线变短了,但也变细了,全局的连线延迟还会不断增长,因为芯片的面积不变。30纳秒一个时钟信号只能穿过芯片的1%面积。结构上不可能无限制细分流水线,一般认为不可能小于 10-12F04,考虑latch的延迟,只剩下6-9级F04。另外封装有一个散热的问题。
晶体管还会增加,我们如何有效利用晶体管资源还是一个问题,晶体管增加,性能增加只是晶体管数目增长的平方根。由于晶体管特性,工作电压不会随着工艺进步而降低,加上频率提高,导致功耗密度随集成度增加而增加。所以Intel暂时推不出4GHz以上的P4。功耗和电压是平方的关系,随着阏值电压的降低,漏电功能大大降低。现在比较强调均衡的性能,比如SPEC CPU2000对顶点,浮点,I/O,大内存有很高的要求。未来需要以低能耗处理大量的服务,比如以网络媒体为代表的流的处理,基于Web的大量请求快速处理。
当业务需求需要结构相应改变,比如如何加速单个控制流的执行过程,现在是比较复杂的硬件,导致了巨大的能耗,未来有可能天然并行的 Web服务器,可以通过简单的并行来加速执行过程。以前开始都是体系结构,缩小运算与访存的差距,过去用缓存,面积和能耗的增长,未来流数据只用一次,所以缓存就不管用。现在很多处理器缓存占8、90%的面积。以前说CPU,什么叫CPU,就是运算器加控制器就是CPU,现在一大部分内存在里面。应用的多样性意味着芯片的多样性,一方面芯片的各种应用需要比较专用的芯片,芯片的制造成本不断提高,一个芯片要求延长生命周期把钱赚回来。

处理器结构的周期60年来,以20年周期经历一个简单复杂、简单、复杂的螺旋上升过程。早期的处理器结构由于工艺技术的限制,不可能做得很复杂,一般都是串行执行。后来随着工艺技术的发展,处理器结构变得复杂,流水线技术、动态调度技术、缓存技术,像量机技术被广泛使用,后来推出RISC技术,但后来超流水做得越来越复杂,现在处理器最多可以执行200多条指令,乱序的执行。所以现在又到了一个复杂到一定程度复杂不下去的时候。
所以看到传统高主频的复杂设计遇到越来越严重的障碍,需要探索新的结构技术来在简化结构设计的前提下充分利用摩尔定律提供片内晶体管,以进一步提高处理器的功能和性能。多核结构是符合发展趋势的。但多核有两个基本的科学问题,计算机理论基础是图灵机,物理上要求并行的,到编程模式必须是串行的,冯诺依曼结构是顺序地址空间和分布式存储期不匹配,理论模型和物理实现的剪刀差越来越厉害,这问题本质上是应用和结构,以及结构和物理之间的差距问题,需要新的模型以及结构的创新工作。我们要应用新模型,或者物理上新器件。如果这两个做不到就架一座桥,把串行结构并行到物理层做。
过去Closing the Gap有很多复杂的例子,操作系统可以支持虚地址空间,另外80年代多发射的结构得以实现。另外晶体管增加也使得缓存层次得以实现,一定情况下可以提高速度。另外缓存一致性协议,可以在分布存储情况下提供统一的编程空间。我们也有不成功的例子,并行计算机发展几十年,目前一种并行处理结构解决困扰并行处理二十多年的并行程序编程困难,串行程序加速小的问题。
第二部分介绍一下龙芯系列处理器,从2002年做了龙芯1号开始,之后做了龙芯2号,用我话说三级条的跨越。龙芯2B性能是龙芯1号3倍,龙芯2C性能是龙芯2部的3倍,之后发展了龙芯3号。现在1号面向IP和嵌入式应用,龙芯2 号面向高端的应用,龙芯3号面向多内容的服务器应用。龙芯2E是64位四发射,乱序执行。现在量产已经基本完成,现在已经向市场批量供应。龙芯2E结构特征,在单处理器结构方面比较到位,不会比国际最好的差。我们有功耗的测试,750M,连CPU、北桥和内存条加一起只有7.5W。这是SPEC定点分支。这是国际组织找了几十个程序,世界上做通用CPU厂家公用的。媒体播放我们觉得750M比P4要快一些。我们部分应用,包括笔记本,一些处理平台,低成本电脑、笔记本,我现在用的就是一家台湾公司做的笔记本。
我理想是“十一五”期间建设在片内攒系统的海龙大厦。龙芯3号多核处理器,我们阶段目标,第一个阶段到2008年希望做8-16核,到2010年做32 – 64核。龙芯3号结构特征是多平台并行虚拟机结构,可伸缩大CMP结构。我们现在面临功耗的问题,应用变化等很多转折点,要抓住这个转折点,完全可以利用后发优势取得突破。主频的游戏已经结束了,并行结构我们很有机会。我们设计的方法很正确,有10个核以上,国外厂商更多运用静态电路,不可能把10个 100W核集成在一起,不可能为了追求极端的性能牺牲功耗。
龙芯3号一个目标要建设和谐的计算和谐,一个机机和谐,就是兼容问题。另外一个是人机和谐,串行程序并行化的问题。要做一个多平台并行虚拟机结构,我们有一个理想,使所有可执行文件可以在龙芯上正确快速地运行。一方面通过进程级虚拟机实现Linux上的X86兼容。另外把虚拟机自动并行化,现在虚拟机使用的热点刚开始软件解释执行,觉得这是热点就开始翻译,翻译以后觉得还是热点就开始并行优化,我们可以更进一步,就是进行并行的优化。这样使得串行程序在多核上可以并行。我们看到以前有一个指令性结构把硬件软件切分开来,以后写一个二进制代码你感觉不到,彻底打破了软硬件的界限。让软硬件大协同实现一个大虚拟机。

阅读全文»

(1个打分, 平均:5.00 / 5)

龙芯CPU(10)–龙芯1号处理器结构设计

这篇文章发表在中国计算机学报2003年4月。是关于龙芯1号的微结构。作者是胡伟武和当年的体系结构实验室主任,也是胡伟武的师兄唐志敏。
读者可以通过阅读龙芯1号和2号微结构的文章,从而可以更好的把握龙芯结构的演变过程。另外,唐志敏已经离开计算所。。。。。。

文章摘要如下:

龙芯1 号处理器结构设计
胡伟武唐志敏
(中国科学院计算技术研究所北京100080)
收稿日期:2002-12-12;修改稿收到日期:2003-02-20. 本课题得到国家“八六三”高技术研究发展计划软硬件主题重点项目“高性能通用CPU
设计”(2001AA111100)及中国科学院知识创新工程方向性项目(KGCX2-109)资助. 胡伟武,男,博士,研究员,博士生导师,主要研究方向为
高性能计算机系统结构、并行处理、VLSI 设计等. 唐志敏,男,博士,研究员,博士生导师,主要研究方向为高性能计算机系统结构、MPP 系统、数字信号处理等.摘要首先介绍了龙芯处理器的研制背景及其技术路线. 分析了龙芯处理器坚持高性能定位、稳扎稳打的设计策略以及兼容主流处理器的原因,并指出在目前达到与国外相同主频的客观条件不具备的情况下,应走通过优化处理器结构来提高性能的道路,并以处理器结构技术的突破为根本. 然后介绍了龙芯1 号处理器的体系结构设计,包括基于操作队列复用的动态流水线设计、在乱序执行的情况下实现精确例外处理、取指与转移控制结构、存储管理以及针对缓冲区溢出攻击的系统安全设计等等. 测试表明龙芯1 号处理器的指令流水线效率高,其安全设计能有效防范使用缓冲区溢出技术进行的网络攻击. 但龙芯1 号处理器的Cache 过小,在组织方式上也有待改进.

【全文下载:龙芯1号处理器结构设计

(1个打分, 平均:5.00 / 5)

龙芯CPU(9)–龙芯2号处理器的微结构

考察一个CPU处理器的设计,通常的方法论为:首先看其结构(Architecture),再看其微结构(Micro-Architecture)。而最重要的是其微结构。 本文是科学院计算所胡伟武与其2个博士生2005年3月发表在Journal of Computer Science and Technology计算机科学技术学报(英文版)的一篇综述文章,较详细的介绍了龙芯2号(编者注:应该是GodSon-2C)的微结构。下面是其英文摘要:

Abstract: The Godson project is the first attempt to design high performance general-purpose microprocessors in China. This paper introduces the microarchitecture of the Godson-2 processor which is a 64-bit, 4-issue, out-of-order execution RISC processor that implements the 64-bit MIPS-like instruction set. The adoption of the aggressive out-of-order execution techniques(such as register mapping, branch prediction, and dynamic scheduling) and cache techniqueus(such as non-blocking cache, load speculation, dynamic memory disambiguation) helps the Godson-2 processor to achieve high perfoormance even at not so high frequency. The Godson-2 processor has been physically implemented on a 6-mental 0.18um CMOS technology based on the automatic placing and routing flow with the help of some crafted library cells and macros. The area of the chip is 6,700 micrometers by 6,200 micrometers and the clock cycle at typical corner is 2.3ns.

【编者注:】 从文章的摘要来看,这个CPU本身并没有什么巨大的研究创新突破,当然这也不是计算所做龙芯的目的,例如,其中描述的各种技术都已经是广泛的被采用在现代CPU处理器的设计中。但是对计算所的工程价值是巨大的。这一点是不容置疑的。做龙芯确实不是为了发表几篇文章。这里的4发射在微结构上指的是Godson是一个超标量(superScalar)结构,拥有两个整数加法器(ALU)两个浮点运算器,一个Load/Store MEM部件。

在这个摘要中,对于编者而言,这个“MIPS-like”是非常细微的(subtle)但不容忽略的。在谈论一个处理器的指令集ISA时,MIPS- like还是MIPS-Compatible的ISA是区别很大的。当然,有没有区别,或者区别在哪里,都会在最后编译器,例如gcc,的后端 (backend)被体现出来。那么在这篇发表于2005年的文章中的“MIPS-Like” 里面蕴含了什么奥秘呢?编者通过调研,得出的结论是:MIPS的专利和法律问题。

在2005年,或者说龙芯2C之前,计算所并没有MIPS的许可证。MIPS的ISA中,有4个被专利保护的指令。因此,龙芯是不能实现这4条指令的。不实现这4条被专利保护的指令,在市场上就只能称为MIPS-Like的处理器。这个没法越过的鸿沟就是美国专利 4,814,976。这4个MIPS I的指令分别是:lwl, lwr, swl, and swr。该专利的一些摘要信息如下:

Patent Name:RISC computer with unaligned reference handling and method for the same

Abstract
In a RISC device a set of four instructions are provided which allow either the loading or the storage of an unaligned reference. The instructions are overlapped to reduce the overall execution time of the device. A circuit is also provided for executing the instruction set.

Patent number: 4814976
Filing date: Dec 23, 1986
Issue date: Mar 21, 1989
Inventors: Craig C. Hansen, Thomas J. Riordan
Assignees: Mips Computer Systems, Inc.
Primary Examiner: Kevin A. Kriess

2007年,为龙芯流片的欧洲公司 ST Microelectronic买下了MIPS的许可证。MIPS公司与计算所达成协议。从此龙芯可以成为MIPS兼容的处理器。有兴趣的读者可以参阅2007年3月28日MIPS公司的新闻稿

下载:龙芯2号处理器的微结构

(2个打分, 平均:5.00 / 5)

龙芯CPU(8)–龙芯2号处理器设计报告

【编者注:】 这是科学院计算所2004年11月发布(公开)的其关于龙芯2号CPU的一个设计报告。当时的流片为Godson-2C。该设计报告中讨论了Godson-2D的设计提案和将来的Godson-3的设计思想。目前,龙芯的最新流片为Godson-2F。龙芯3目前还没有任何发布日程表。对CPU微结构有兴趣的读者,这个报告一个很值得一读并展开讨论。我们也可以从其2004年的发展目标与现在的状况对比,从而也更加了解设计一个CPU的道路是不容易的。下载龙芯2号处理器设计报告

(没有打分)

龙芯CPU(7)–高性能通用微处理器研发现状及发展策略

【编者注:】这是胡伟武博士在2006年1月发表在中国计算机学会通讯杂志创刊号的一篇文章。在该文中,胡伟武阐述了其对目前国内外高性能通用微处理器的研发现状,和对龙芯将来发展的策略的一些观点,例如:

根据目前应用的需求,我们设计的处理器芯片所面向的系统分别为高性能PC、SMP服务器以及高性能计算机系统。根据上述三类系统的要求,我们的高性能通用处理器芯片研制可以分如下三个阶段进行。
第一阶段时间跨度是从现在到“十五”末(2004年~2005年),在目前国内已经研制和正在研制的高性能通用微处理器的基础上进一步优化结构和提高主频,争取“十五”微处理器的工作频率达到1GHz 左右,SPEC CPU2000 的实测性能达到和1.5GHz~2.0GHz的Pentium 4相当的水平,同时设计配套芯片组和相关系统应用软件,研制成功高性能桌面个人计算机,在“十一五”期间形成一定规模的产业。

第二阶段时间跨度从现在到“十一五”初(2004年~2006年),突破单核、单线程OC实现技术。其中,每个SOC中嵌入一个高性能通用CPU核以及桥控制逻辑和各种口控制逻辑,如存储器控制逻辑DDR、I/O 控制逻辑PCI40、HT、AGP41等。此外还直接支持多处理机互连的SOC,通过多处理器互连网络路由构成支持全局存储访问的多处理机系统,解决服务器用CPU问题。

第三阶段时间跨度为“十一五”初期到“十一五”末(2006年~2010年),突破多多线程SOC技术。到“十一五”结束时设计出主频为2GHz~4GHz,片内峰值运算速为每秒1000亿次浮点运算的多核多线程芯片。基于上述单核和多核高性能SOC芯片,“十一五”初研制成功万亿次高性能计算机系统,在“十一五”末研制成功百万亿次高性能机系统。并下大力推广应用,着力解决国防和国民经济的核心重要应用领域依赖国外微处理器问题。

(全文下载:高性能通用微处理器研发现状及发展策略)

(没有打分)

龙芯CPU(6)–李国杰院士谈研制龙芯CPU的策略考虑

【编者注:我曾经详细收集了中国龙芯CPU的许多资料,现开始做一些整理并发布于此。总体而言,龙芯对中国信息技术的发展战略很重要。用李国杰院士的话讲,做龙芯是一个国家战略行为,而非一个单纯的技术 和(或)商业动作。】

李国杰院士谈研制龙芯CPU的策略考虑

2002年10月16日

中科院计算所 李国杰

我国科技界与产业界至今对如何快速而健康地发展我国IC产业,特别是对如何发展CPU产业还没有达成共识。本文以研制龙芯CPU的策略考虑为基础,对发展我国的集成电路设计产业提出一些观点与看法,请教于全国同行,旨在抛砖引玉,希望对决策层尽快做出科学决策有所裨益。

一、跨越与跟踪

IC加工业是资金高度密集的产业,一条0.18微米生产线,一般要投资15亿美元以上,国外对先进IC加工设备出口中国仍有许多限制,因此,我国在芯片加工方面实现跨越式发展难度相当大。相对而言,芯片设计是智力密集型产业,虽然IC设计产业的收入目前只占整个IC产业10%左右,但营业额增长率高于制造业3倍以上。台湾IC设计业1998年、1999年的投资回报率分别为21.6%和39%,比IC制造业的回报率(4.%和12.6%)高几倍。据麦卡锡公司预测,中国国内IC设计业2010年的收入可达100亿美元。我国从事芯片前端设计的人力资源丰富,许多研究所和大学都有不少从事系统和硬件设计的人才。芯片设计的知识产权和专利很多都体现在系统级设计上,尤其是当进入片上系统(SoC)设计时,系统级的创新更加重要。龙芯一号CPU物理设计的成功表明有系统级设计经验的人转入物理设计并不是一件高不可攀的事,入门并不难,只要有一股钻劲,经过几年的积累,我国一定会出现一批物理设计的高手。当然物理设计本身是一门高深的技术,微电子专业的人才是物理设计的主力。因此,我们认为,中国实现IC产业跨越发展的主要希望在芯片设计上。

在分析了计算所系统设计方面的技术储备与优势后,我们在龙芯一号设计开始时,提出了“高起点,一步到位”的要求。所谓高起点是指尽可能采用先进的制造工艺。我们第一次设计和流片生产CPU就跳过了0.35、0.25微米工艺,选用了目前代加工厂主流的0.18微米工艺。做出这种决策不是盲目地碰运气,而是通过与硅谷许多有经验的工程师深入调研分析流片成功的可能性后做出的,从某种意义上讲,这也是利用了“后发优势”,“借树开花”。所谓“一步到位”,当然不是指第一次设计就做出性能超过P4的CPU,而是针对当时国内有些单位还在启动研制386、486的形势,要求我们在微体系结构上有创新,用国际先进水平的体系结构实现64位浮点运算,尽可能实现技术上的跨越式进步,而不是从模仿20世纪80年代技术开始一步一步爬行,并且一开始就强调正向自主设计,不采取解剖别人芯片反向设计的路线。“一步到位”的另一层意思是不做供鉴定用的实验室样片,而是要确保万无一失,经得起产品检验,做成可批量生产的芯片。经过一年多努力,龙芯一号达到了预期目的。

我们真正期盼的跨越式进步的标志性产品是龙芯2号。我们在设计龙芯2号时,已分析了Intel P4、Sun SPARC、HP的Alpha、IBM Power4等多种主流芯片的微体系结构,要求龙芯2号的体系结构有自己明显的特色,以最有效的方法实现四发射,即一时钟周期可同时执行四条指令(P4实现了三发射),而且要为下一步研制超线程CPU和多处理机CPU打下基础。计算所与在美国参加过千万亿次计算机研制的高光荣教授共同成立了先进计算机联合实验室,重点研制多线程机制,争取实现几十个甚至几百个线程并行操作。这项技术各大公司还在研究之中,我们将争取以跨越的技术进入国际前列,在龙芯3号、龙芯4号中采用。

我们主张的跨越式发展还体现在我们对微处理器发展趋势的理解与判断上。国人对于CPU和操作系统有特殊的感情,把这两者称为信息技术的核心技术。实际上随着Interent普及与发展,人们心目中的P3、P4之类的CPU和Windows之类的操作系统的地位正在不断下降。在向科学院领导申请知识创新重大项目时,我曾说过,龙芯微处理器的目标不是传统的“CPU”,而是“DPU”,即Distributed Processor Unit。所谓中央处理器是针对过去的大型计算机取的名,随着网络存储和各式各样的通信与终端设备直接上网,微处理器将分布在各种设备中。以后计算机、通信设备(如智能化的路由器等)和信息家电的界限越来越模糊,新一代的微处理器和现在PC机上的CPU将会有很大区别,创新的空间很大。中国的芯片设计要跨越发展,可能要通过软件和算法的突破来弥补硬件加工的不足。系统设计人员在芯片设计产业中将扮演十分重要的角色。总之,我国的芯片产业不能再走PC产业走过的以组装为主的老路。如果只重视附加值很少的低端芯片或主要用别人的IP“组装”低端SoC芯片,前途不会太美好。

二、通用与专用

我国CPU的研制尚未真正开展起来,863计划集成电路重大专项的高性能CPU项目还处在软课题研究阶段,但关于重点支持所谓通用CPU还是嵌入式CPU的讨论已经进行多次,不幸的是谁要是讲想做通用CPU,马上就有人反驳:你想赶上Intel P4?这肯定不可能,还是先做点电表控制芯片、身份证卡吧。国外公司研制芯片只关心市场有没有需求,不会先浪费时间论证应该做通用还是嵌入式芯片。从各个芯片公司的网页上我们只会看到各种型号芯片的介绍,看不到他们将芯片分成通用和嵌入式。

从语文的角度上讲,“通用”的反义词是“专用”不是“嵌入式”。所谓嵌入式CPU是指安装在不是计算机的路由器、手机、电视机、汽车等设备上的CPU 芯片,而装在PC机、笔记本电脑、工作站、服务器上的CPU一般称为通用CPU,因为它能执行各种各样的程序。嵌入式是CPU的一种应用,一般只要求运行某种确定的程序,很多场合的嵌入式应用都要求低功耗,特别是像手机、PDA这类手持移动设备,低功耗意味着充一次电可运行更长时间,因此,低功耗应用追求更高的MIPS/W(每瓦每秒百万指令),而不是MIPS数。好的嵌入式芯片,如IBM PowerPC750FX每瓦的MIPS数比Intel P4(2.4G)高10倍,但从芯片的指令系统和体系结构而言,所谓通用CPU和嵌入式CPU并没有本质区别。不论是通用CPU还是嵌入式CPU,只要是低档产品都容易做而高档产品都难做。要特别强调的是所谓嵌入式芯片五花八门,但大都采用通用的CPU核,如MIPS核、ARM核等,从这个意义上讲,通用 CPU和嵌入式CPU技术上是完全相通的,不存在只能选其一的问题。

在集成电路的发展历史上,芯片产品在制造与使用的对立统一中发展,随着半导体产业的景气循环,总是沿着通用与专用循环往复不断进步。天同证券公司在网上发表了一篇“半导体产业行业研究报告”,对通用专用芯片交替发展做了一些分析,本文下面引用该文的分析结果。1959年仙童公司推出第一个硅平面晶体管商品,开始了芯片产品第一个通用循环周期。其后不久仙童公司又推出面向计算器、电视机的专用标准构件,标志着IC产品进入第一个专用循环周期。20世纪 70年代Intel公司开发成功微处理器芯片,使IC产品上升到一个新的通用循环。20世纪80年代设计工具的发展推动了一个产品满足一个用户要求的专用集成电路(ASIC)的发展,使IC产品进入高一级的专用循环。20世纪90年代初,又发展出了可编程门阵列(FPGA),用户可进行软编程反复改变硬件功能,又进行新一轮的准通用循环。随着ASIC技术的积累,IC开始向片上系统(SoC)发展,SoC实质上是更高一级的专用系统。随着通用-专用模式的交替发展,硬件软件的界限开始模糊起来,IC设计进入了基于可重用知识产权(IP)库的设计阶段。

IC发展历史已表明,通用CPU是IC技术发展的源头。从几年前开始,最先进的IC制造工艺首先在通用CPU上使用(过去曾经是DRAM)。如果我们不敢碰通用CPU,就只能永远跟着别人走。在2000年计算所酝酿研制CPU时,我们曾反复讨论过是买MIPS或ARM CPU核,针对某个应用做点外围电路,还是自己做一个有自主知识产权的MIPS CPU核或类似ARM的CPU核。我们的结论是没有自己CPU核的芯片产业就如同没有CPU的PC产业一样,而研制通用CPU是形成有市场竞争力的CPU 核的重要途径。因为一个好的CPU核必须经过多种应用的考验,单独为汽车控制等应用做一个较专用的CPU难以扩充成较通用的CPU核。

从网络信息安全的角度出发,我国也需要有自己的通用服务器CPU。服务器相当于电网中的发电站,一旦服务器受到攻击,将会造成大范围的网络瘫痪。服务器的用量少于终端(美国服务器的销售额约为PC机的1/3),但服务器CPU作为涉及国家政治、经济、信息安全的核心技术一定要掌握在自己手里。在龙芯CPU研制时,从硬件设计上采用了防止缓冲区溢出攻击的新技术,可以防止大多数黑客和病毒攻击(即使软件有漏洞也能防攻击),并申请了10项发明专利。龙芯一号流片成功后,曙光公司很快就推出了基于龙芯一号的龙腾服务器,尽管其性能只相当于四五年前的PC服务器,但其与众不同的高安全性对政府、金融、国防等部门用户会有吸引力。

通过以上分析,我们的结论是我们应重点发展量大面广的芯片设计,即较通用的嵌入式芯片,同时要重视高安全性的服务器CPU芯片设计。形成较通用的嵌入式CPU核的一条可行途径是从设计通用CPU入手。通过应用实践再适当裁剪通用CPU比从专用CPU开始不断扩充更合理。虽然国内对低端微控制器芯片仍有一定需求,但从海关统计数字来看,不论是CMOS芯片还是其他数字集成电路,大多数进口芯片是0.25微米以下工艺生产的芯片。是否在落后工艺下生产量小面窄的嵌入式芯片应由企业自己判断决定,国家不能采取只要是嵌入式芯片就支持的短视政策。

龙芯一号CPU研制体现了我们制定的发展战略,一个多月来十多种应用轻松移植,表明龙芯CPU既是一种较通用嵌入式芯片(功耗小于0.5W)可用于网卡网关、网络终端计算机(NC)等,同时也是高安全性的服务器芯片,可用于网络服务等。明年一季度,基于龙芯一号的SoC芯片将问世,更适合于做NC和网络设备。

剩下的一个问题是我们究竟做不做与Intel兼容并与之竞争的通用CPU芯片。我们的意见是暂时不做。我国舆论界有一种误导使许多老百姓认为“信息技术主要是PC机,PC的核心技术是P3、P4芯片,芯片的高技术是高主频。”实际上PC用的CPU只占微处理器数量的1%左右,但销售收入有200多亿美元,占全球1500多亿美元IC总收入的15%左右(有机构统计,PC用IC占IC总市场的30~40%)。PC芯片的高收入高利润是多年来Wintel 联盟的“功绩”,我们暂时不具备实力与Intel比高低。在未来的发展中,各种Internet Appliance(所谓IA产品)增长势头明显大于PC,据IDC公司预测2002年IA产品销售数量将达到1.8亿台,超过PC机销售数量。PC机本身也在变化,用户未必希望PC机主频3G、4G这样升上去。因此我们不能固守“通用CPU=P4”这种思维模式。

三、兼容与另起炉灶

龙芯一号启动时,最重要的决定是要不要与国外主流系统兼容,如果要兼容与哪一家兼容?有人认为选择芯片指令系统是一个政治问题,是受不受制于人的问题。我们则认为,在全球经济一体化的形势下,我们要抛弃所谓“完全自主知识产权”的旧观念,世界上几乎所有芯片公司的产品都是“你中有我,我中有你 ”,连Intel公司都要买别人的IP,为什么刚刚起步的中国IC设计产业就必须全用自己的IP?兼容不兼容完全是市场行为,是我们根据推广龙芯CPU的市场需要决定的。应当说作出必须兼容的决定在很大程度上受到曙光服务器成长过程的启发。曙光一号服务器和曙光1000大规模并行机开始走的是一条不完全兼容的路,我们在AT&T Unix和Mach OS基础上分别研制了自己的并行操作系统。尽管符合POSIX标准,有自主知识产权,可以得国家最高的科技成果奖励,但数据库厂商和第三方应用软件厂商不愿意花功夫为曙光机移植软件,曙光机只能卖给自己有源程序的用户,市场上成千上万种应用软件用不上。冷酷的事实教育了我们,为了充分发挥后发优势,利用已有的巨大软件资源,与主流系统完全兼容是迅速扩大市场份额的良策。我们相信推广龙芯CPU将会遇到与曙光服务器同样的问题,因此毫不犹豫地选择了兼容道路。

经过对X86、PowerPC、MIPS、SPARC等多种指令系统的仔细分析,我们最终选择了MIPS指令系统、在这一选择中,唐志敏研究员起了关键作用。唐志敏研究员是计算所年轻的博士导师、863计划计算机主题专家组成员,也是龙芯CPU课题负责人。他在体系结构方面造诣颇深,对各种RISC指令系统做过深入分析后,认为选用比Alpha功能强又比PowerPC简单的MIPS指令系统具有较好的可行性。选择MIPS指令系统的更重要的原因是出于市场考虑。MIPS公司不同于Intel、SUN和IBM,它不是IDM公司,自己并不生产销售芯片,而是以卖License和服务为营业范围,它不但不像Intel公司那样反对别人做兼容芯片,而是支持其他厂家做MIPS兼容芯片。世界上许多大公司,如生产路由器的CISCO、生产游戏机的SONY等都采用MIPS指令系统。MIPS芯片不仅用于SGI公司的高档工作站与服务器,而且是主流的高档嵌入式CPU,每年MIPS芯片销售量超过7000万片。市面上已有大量MIPS应用软件,龙芯一号流片成功后许多整机厂商一小时内就装上了应用软件,充分证明我们的决策是正确的。

与兼容策略相关还有一件大家十分关心的事,那就是如何避开专利。国内有些专家认为芯片设计专利是我们难以逾越的障碍,我们有些决策者也对此忧心忡忡。专利的确是我们必须高度重视的技术障碍,但也不能把专利看成拦路虎,长他人志气,灭自己威风。我们在研制龙芯一号过程中查阅了所有有关专利,我们发现指令系统本身不是专利,而且几乎没有一项概念性的专利,例如Cache技术、多发射技术等,所有专利几乎都与具体实现技术有关。我们设计CPU是先通过译码器变成自己定义的统一中间代码,所有的功能部件执行中间代码,与原来的指令系统无关。所以对我们而言,回避专利与采用什么指令系统没有关系。我们在设计中没有侵犯任何专利而且自己申请了十余项发明专利。今后做全定制设计,除了我们自己设计一些关键的宏单元外,一定会购买一些IP使用权,包括一些专利使用权。在IC设计中这是十分正常的。今后我们自己的专利与IP越来越多,通过Cross Licencing共享互用IP和专利是必由之路。与计算机产生一样,IC产业的横向分工越来越明显,IP(包括专利)将是IC设计厂商的主要产品,我们要学会如何买卖IP不要谈“专利”色变,作茧自缚。

还有一种看法是认为采用别人的指令系统说明没本事,还不掌握CPU核心技术,不如另起炉灶自己定义指令系统的单位水平高。实际上学过计算机原理与系统结构课的人都知道,自己定义一套指令系统并不是难事。40多年前,计算所就开始自己定义指令系统,几十年来计算所研制的十几种计算机都是自己定义指令系统。一个好的指令系统要经过大量应用反复考验修改才能成为市场接受的主流系统。如同大家用C、VB、JAVA编程序,没有人强调非要自己定义一种语言编程一样,研制CPU的水平并不在于是不是自己定义指令系统,谁能占领市场才是真本事。

四、IC设计的科研与产业化

龙芯一号研制成功后,马上面临研制更高性能的龙芯2号与尽快将龙芯一号产业化的矛盾,这与当时研制曙光机的情形十分类似。我们决不能只以不断研制出新的CPU为目标,置产业化于不顾。在科研人员中要树立一个观念,龙芯一号卖不出去,研制出龙芯2号也没有多大意义。计算所的科研人员已做了计划,全力配合神州龙芯公司打开市场,龙芯1.1、龙芯1.2两款SoC产品的优先级放在龙芯2前面。神州龙芯公司也在大力开拓龙芯CPU的应用,争取较多的定单。我们的体会是在研制龙芯CPU时,为国分忧的激情是一股强大的动力,胡伟武研究员几篇关于龙芯研制过程的文章催人泪下,表明年轻一代科研人员像两弹一星研制人员一样有着高尚的爱国情操和顽强的拼搏精神,计算所有这样一批又红又专的人才才能做出让人眼睛一亮的成果。如果我们一味等待国外的高手回来才开始研制,恐怕今天龙芯CPU还只存在于希望之中。另一方面,根据我们推广曙光机的经验,我们不能把产业化的希望寄托在用户的爱国热情中。CPU虽然是涉及国家安全的特殊产品,但卖产品就是卖产品,不能加上过多政治色彩,必须靠产品本身的可靠性、高性价比和出色的服务取得用户的信任。从某种意义讲,推广龙芯CPU是比研制CPU更艰苦的一场战斗。较通用的嵌入式CPU的用途很广泛,不一定非要性能超过P4才能卖得动,266M 0.5W功耗的MIPS兼容CPU芯片一定有它对应的广阔市场。国家在开始推广国产CPU时做一些扶植是必要的,但关键在自己努力。我们有信心比推广曙光机做得更好,让国产CPU尽快在市场上占有一席之地。

(4个打分, 平均:4.25 / 5)

龙芯CPU(5)–再说我们的CPU

 【编者注:这篇文章是胡伟武在2001年在发表第一篇文章《我们的CPU》后,对网络上许多讨论的答复和一些感想与解释。事情也都是在龙芯1号流片之前。】

没想到《我们的CPU》在网友中引起了一些讨论。我写这篇文章的本意之一是怕一些新闻机构报道时说得不够准确而挨同学或网友的骂,自己把这个事情说清楚挨的骂会少一点。现在看来,这个目标至少部分地达到了。但我没有想到大家对我们自己的CPU如此热心,使我觉得我们不是在孤军奋战,增加了信心。我对网友意见的重视不亚于对鉴定委员会意见的重视,专门让一些学生收集这些意见并进行分类,并在组内告戒对于网友的意见,”有则改之,无则加勉”。因为好多网友是真正在第一线工作的人,是真正把握国际前沿的人。鉴定委员会的意见也很重要,一者他们都是国内专家,二者没有他们的支持,我们都会饿死。这就好比我们写文章得有人审稿一样。

我说过,我们现在做的工作不多,实在不值得写太多的东西来宣传或挨骂后进行解释。但从网友的讨论中,我得到很多启发(很多网友提了很多很好的建议),我想到可以利用网友的智慧一起来推动这个事情。

不管对我们的工作支持的也好,反对的也好,有两点是一致的。一是对我们自己的CPU非常关心,二是对中国科技界目前的浮躁现象深恶痛绝(这其实很难怪科技工作者,这是从上到下全国的风气)。

对于那些对我们的工作加以鼓励的人,我要深深地感谢。看得出来,有不少是行家,功底很深厚。我们一定会继续努力,争取早日投片成功。有些网友提了很好的建议(包括不少技术上的建议),我们会用在我们下一步的工作中。有些网友表示,只要我们投片成功,达到PII的水平,他们愿意用PIV的价钱来买我们机器。对他们除了感谢外还有致敬,我把他们看作我们的朋友。并请他们不要食言,因为我是玩真的。

有一位网友提了很好的建议,让我们开放我们的设计,这个主意很好。只要所里不反对,我肯定开放源代码,至少是C模拟器的源代码,请大家一起帮我们做设计。当然,开放之前,还要加一些东西,因为我写程序没有注解。

有不少网友提到这个和美国研究生的”大作业”有什么区别。这个区别是很大的。想一想,有没有美国的高校把一个双精度、全流水、符合IEEE 754标准的浮点运算部件作为一个”大作业”让学生做,而这只是我们十几个模块中的一个模块(当然是较大的一个)。顺便提一下,我们的浮点运算部件用的算法比较新,是九十年代末提出的。我可以给大家提供一个C程序,用这个程序在PIV的机器上能测出它不符合IEEE 754的地方(这究竟是处理器的问题还是程序或者编译的问题也欢迎行家分析),而在我们的机器上测不出来。另外,说到大作业,我们现在也正准备开一些这方面的课,让我们的博士生做一些大作业,其中一项就是做一个实现MIPS I的指令系统的CPU,或者写一个完整的嵌入式操作系统。其实我在文章中提到我在科大本科论文做8086就是想传递这样一个信息,做CPU设计并不难,本科生就能做,难的是要做好。如果真的是一个大作业,用得着我领着几十个人干吗?至少我的科大8611的同学和以前对我做的软件DSM系统JIAJIA有所了解的同行知道我不是白痴。我的课题组中高手很多,不少是能独当一面的,其中有对Linux内核非常熟悉的,也有工程经验非常丰富的。

关于媒体的报道中关于我们CPU的评价,不管别人怎么说,自己觉得在通用CPU设计方面处于国内领先,和在动态流水线设计上达到国际先进水平还是比较确切的。如果我已经做了多发射和对CACHE作了改进,我还敢说在通用处理器设计方面达到国际先进水平。在动态流水线方面(针对我们的结构)可以说已经接近一个极至,很难再有很大的提高。动态流水线的核心是要解决各种相关,如数据相关、控制相关、例外相关等。做到后来,我们的结构有点象数据驱动或事件驱动,即译码或发射时只是在指令中建立互相的相关关系,并不解决相关,指令到达最后关头才等待(再多走一拍就会出错了)所需的数据或事件,一旦该指令所等待的数据或条件准备好,马上继续前进。至于其中的创新,结构上的大创新是没有的,但具体实现上的一些技巧还是有的,有几点我自己非常得意。记得 Henessy(还是Patterson?)曾经说过,把90年以后所有关于Architecture方面的文章都烧掉,对Architecture的研究没有任何损失。其实,如果大家仔细分析分析一些通用CPU的结构,如Alpha, MIPS, PowerPC, PIV等,发现确实是大同小异,取舍不同而已。我这样说是因为我们最近已经对这些处理器的结构做了较详细的分析和比较。

有些网友对我们的设计在技术上提出了不少建议,尤其是关于CACHE的重要性。关于CACHE,我们是非常重视的,因为我在做DSM时用过除了Alpha工作站以外的几乎所有厂家的计算机,对CACHE对性能的影响是有深刻体会的。在我们投片时容量肯定会增加,组织方式也许会做到二路组相联。不过,CACHE设计是很复杂的,尤其是做non-blocking的CACHE设计更复杂,我们现在最关键的是要投片成功,所以为了保持控制简单我们在CACHE方面不会太 aggressive,好多优化方法可能在目前的阶段不会用。例如,为了做2路组相联,连线会增加很多,而在深亚微米的工艺中连线复杂性和延迟是最主要的。我们目前关于CACHE的预研正在进行,也有一些新的想法。关于多发射,我想以后做到双发射就行了,因为RISC结构现在越来越复杂,做到4发射已经有点违背RISC提出时的初衷。为了提高性能,超流水、多线程、片内SMP等技术倒是我较看好的,上次我提到过,希望做几十个CPU的大SMP结点。当然有好多关键技术没有解决。我对Deleware大学高光荣教授的EARTH技术比较感兴趣(这几天高老师正好在计算所跟我们交流)。自己作了这么多年并行处理,希望以后用户不用并行编程就能用并行机。如果大家觉得上述技术思路有问题,欢迎大家讨论,因为这种决策对于我们是至关重要的。

至于有些人担心我们自己虽然能做设计但生产不了。我想说的是中国目前最缺的是设计,国内最近化了很多钱组建了或正在建不少生产线,0.35, 0.25, 0.18的都有,关键是没东西可以生产。的确,以前是由于生产不了而导致设计队伍垮掉,但现在不同了。此外,ASIC设计很见工夫,象Alpha 21264在0.35的工艺上能做到600多MHz的主频,我看我们最多能做到200MHz就很不错了,这些东西的确是需要积累的。

对于有些觉得凡是中国人做的事情就”[censored]“, 觉得自己的同胞肯定不如洋人,或没有仔细读我的文章就恶意攻击并以此为乐的人,用先人的两句诗奉送:”汉人学得胡儿语,便向墙头骂汉人”。但如果他们能够做到如下两件事情之一,我愿意在我们够得到的所有BBS上向他们道歉,并承担一切费用请他们回来向他们请教。第一件是在两个月之内单独完成一个单双精度、全流水、符合IEEE 754标准的浮点部件的逻辑设计,要求完成除了除法、开方以外的MIPS III指令系统的所有浮点运算。第二件是在我们的处理器中有四条MIPS的地址不对齐的访存指令(LWL,LWR,SWL,SWR)没有实现,处理器碰到它们时产生一个保留指令例外并由操作系统软件模拟,要求一周之内修改LINUX内核完成这一功能。第二件事情做起来并不难,但得知道修改LINUX的什么部分,以及当模拟的指令是转移指令的延迟槽指令时的特殊处理,还要保证核心态发生的保留指令例外处理不影响系统的稳定,此外,由于例外处理是在核心态,要注意别留下安全隐患,使非法用户有机可乘。如果把我们的GodSon比喻成在美国的一个学期的大作业,那么上面的两件事应该在一个星期之内完成.

阅读全文»

(2个打分, 平均:5.00 / 5)

龙芯CPU(4)–我们的CPU

【编者注:这篇文章其实是从时间的前后顺序而言是胡伟武关于龙芯CPU的第一篇文章,发表者龙芯1号流片之前的2001年。】

我们的CPU
胡伟武,2001年

我参与计算所的CPU开发项目,源于2000年10月一个偶然的机缘。10月中旬,所领导派我到我的母校中国科技大学去进行招生宣传。这是我 1991年毕业后第一次回到母校。我回到了我原来工作过的实验室,十年前在那里,我曾经和另外一个同学一起做过一个与8086指令级兼容的处理器作为本科毕业设计。这是一个用400多个74LS系列的芯片搭起来的电路,能够运行8086指令系统中除了十进制和除法指令以外的所有指令。由于没有制版的费用,所有的连线都是手工焊的。这次回去,我看到了我原来做的机器还静静地躺在那里。面对与十年前一样凌乱的实验室和满桌触手可及的芯片、电容、电阻、电烙铁,我有一种重操旧业的冲动,因为十年前那些没日没夜地与逻辑门、触发器、译码器、选择器玩命的日子有一种深深的诱惑,至今我还可以如数家珍地说出好多当前我用过的集成电路芯片的引脚定义。我想到了我们所正在筹备的CPU设计项目,于是我给我的师兄唐志敏打电话,他是计算所系统结构室的室主任,目前正负责计算所CPU设计项目的准备工作。我开玩笑说一、二年之内不把通用操作系统boot起来,提头来见。于是回计算所后,我就开始考虑CPU的指令系统和流水线等问题。

2001年8月19日,前苏联解体的十周年纪念日,我们设计的Godson CPU成功地把LINUX操作系统boot起来。当 “login:” 的提示符出现在屏幕上时,计算所北楼309房间一片欢呼。到9月中旬,一个用我们自己设计的CPU的完整计算机系统已经浮出水面,该系统运行完整的LINUX操作系统, 内核版本为2.4,可以做其他运行LINUX操作系统的计算机所支持的一切事情,包括运行gcc编译器,X- window视窗系统,WEB服务器,SPEC CPU2000基准程序等。我们最引以为豪的还是该CPU的系统结构设计。可以说目前世界上最先进CPU 的系统结构技术,该有的Godson都有,不少地方还有创新。虽然目前我们只是基于FPGA的设计,主频也不高,但当我们的CPU运行到12.5MHz 时,其性能已经不比50MHz主频的Intel 486差(当然, 我们的主板比486主板要好),确切地说,浮点性能比486强一点,定点性能比486 差。值得一提的是,当我们用一个叫“偏执狂(Paranoia)”的测试程序测试CPU的浮点部件是否符合IEEE 754标准时,奔IV处理器测出了浮点不严格符合IEEE 754标准而我们的CPU完全符合标准。此外,在Godson中还专门针对网络攻击进行了安全设计,可以有效防止利用缓冲区溢出技术进行的攻击。

应该指出的是,我们只是完成了一个CPU的逻辑设计,目前是用FPGA对这个逻辑设计进行验证,只是一个阶段性成果,还没有进行投片。用李所长的话说,“三分之二的工作还在后面”。如果我们对目前的工作沾沾自喜,那是很肤浅的。但即使是这个成果的取得,也来之不易。个中滋味,酸甜苦辣俱全,很难为外人所体会。回顾我们开发Godson处理器的过程,虽然不长,但有教训,也有经验,总结一下,对以后的工作是有好处的。

我们做CPU设计缘起于所长李国杰院士的直接推动。李老师是我接触过的院士中比较钦佩的一个,因为他能够站在如何发展整个国家的信息产业的角度来考虑问题,而不是一个局部的角度。现在我慢慢知道,他推动我们所做CPU设计是很不容易的。也许是由于前几年计算所的反复折腾给人留下了不好的印象,使得很多人觉得计算所没有能力做CPU,李老师最后只能把CPU设计作为一个计算所的所内项目先做起来。我在计算所连读书带工作十来年,也是第一次体验到不用立项申请而直接开始做一个课题。CPU设计技术是核心技术,但市场壁垒很高,即使现在已经投片出来很好的CPU,如果没有人用就会走入以前“鉴定会就是追悼会”的怪圈。但我相信李老师在信息产业界的经验和影响力,所以决心做下去。

我的师兄唐志敏是系统结构室的室主任,他把握着整项工作的大局,领导整个CPU设计的总体规划。他的大度和谦和能够把一批非常能干的年轻人团结在一起,使大家互相之间从无猜忌。现在在科技界有一种奇怪的现象,就是一个年轻人作出一些成果之后,就喜欢独立门户,结果造成了科研力量分散,干不成大事的局面。大家都在沾沾自喜地干一些几十万或顶多是上百万的项目,形成不了很大的力量。在我们的项目组中,却有一批本身也很厉害,能够独挑一摊的年轻人紧紧地团结在一起,同心协力干一件事情,一个重要的原因是唐志敏是一个能够容人的领导。举一个简单的例子,在所里后来立的一个CPU设计的项目中,我是项目负责人,但包括项目申请书、每月一次的课题进展状况及支出情况表、以及鉴定会材料等,我一个字也没有写过,全是唐志敏代劳,使我有90%以上的时间能够用在编程和逻辑设计。这只是一件小事,但我在计算所十来年,见了不少下属帮领导写报告的事,却从未见过领导帮下属写报告的。唐志敏在全局的把握和总体规划上也是有独到的见解,至少是我所不能及的。关于我们未来CPU的用途,我的主张是自己做高性能工作站,但做出来干什么以及如何与别人竞争却难说,唐志敏却非常有数,他说现在我们所的软件室正在做电子政务,以后结合在一起做,至少在安全方面是国外产品无法竞争的。我当时觉得这种眼光真是“高瞻远瞩、高屋建瓴”。

张志敏老师在我们的CPU设计中负责工程管理,他是李所长请来的客座研究员。根据我们自己的分工,在我们设计CPU的队伍中,唐志敏是总负责,我负责设计,张老师负责工程管理。张老师是责任心非常强的人,很义气,工程经验非常丰富。我最佩服张老师的有两点,一是他把个人利益看得很轻,他放弃了原来工资更高的工作到我们这里来做这个事情;二是他做事情很实在、很专一。我有一个观点,一个人一辈子做好一件事情都不容易,因此比较讨厌一些一会儿这边,一会而那边,想两边都得好处的人。但张老师不是这样的人,他做事情很实在。在我们基本完成Godson的逻辑设计后,需要一个模拟主板的环境,以便在逻辑设计上通过软件模拟启动LINUX。我觉得这个事情很难,但张老师加班加点一两个星期就写出来了。我和张老师配合得非常好,简直是最佳搭档。他工程经验很丰富,我理论上强一点;做事情他比较稳重,我比较偏激。在每周一上午的例会上,我布置完本周的工作后,总要慷慨激昂地动员一番,张老师总是要摆一些困难泼泼冷水,真是一张一弛。以致于有一次他不泼冷水了,大家都不习惯。

阅读全文»

(1个打分, 平均:5.00 / 5)

龙芯CPU(3)–关于龙芯2号的一些说明

【编者注:我曾经详细收集了中国龙芯CPU的许多资料,现开始做一些整理并发布于此。总体而言,龙芯对中国信息技术的发展战略很重要。用李国杰院 士的话讲,做龙芯是一个国家战略行为,而非一个单纯的技术 和(或)商业动作。我深以为然。当然,这并不代表编者和(或)弯曲评论全部同意胡伟武的技术或者其他的观点】
关于龙芯2号的一些说明
胡伟武
2005.07.27

1. 龙芯的知识产权问题
计算所在设计龙芯处理器之初就非常重视知识产权问题。由于采用了部分MIPS指令系统中的指令,因此对MIPS公司的有关专利进行了深入的检索和分析。根据我们的检索和分析结果,到目前为止,龙芯处理器的所有设计,不存在对MIPS公司专利的侵权问题。与MIPS的知识产权纠纷最常见的是MIPS指令系统中的几条(32位模式为4条,64位模式为8条)访存地址不对齐(Unaligned Memory Access)的指令。MIPS公司为这几条指令的的实现方法在美国、日本、韩国、加拿大、澳大利亚申请了专利。而且以这几条专利为武器对MIPS公司的知识产权进行了正当的保护。过去就有美国公司由于这几条指令的陷入与MIPS公司的知识产权纠纷。但龙芯不存在对这几条指令的侵权问题。(1)到目前为止,在市场上销售的所有龙芯处理器和龙芯IP都没有实现这几条指令。(2) MIPS公司没有在中国申请与这几条指令有关的专利,因此尤其是在中国市场,不存在对这几条指令侵权的问题。

此外,MIPS公司申请与这几条指令的时间为1986年,美国专利法对该专利的保护期限是20年。MIPS还有其他一些专利,如关于媒体指令的专利以及关于大尾段(Big Endian)和小尾段(Little Endian)切换的专利。不过,这些专利一般不会有人去用。如龙芯2号中实现了完全自己定义的100条左右的媒体指令,只实现了小尾段的数据格式。值得指出的是,MIPS公司与计算所一直以来都在进行密切的联系,双方领导人已经进行多次友好的互访(其中包括计算所所长和MIPS的CEO)并进行了友好协商。MIPS公司希望计算所取得“MIPS兼容”的许可权,计算所也希望最后从MIPS公司取得与MIPS兼容的授权。取得授权的主要目的是:(1)实现上述几条指令并在全球范围内合法销售。(2)充分利用MIPS兼容的品牌优势。(3)取得MIPS许可权后,同时取得MIPS公司在设计、验证等方面的全面技术支持。为了避免不必要的麻烦,计算所希望借这个机会明确表示,以后计算所在描述龙芯2号处理器的指令系统时,不再用象“MIPS-like”或“类 MIPS”这种容易引起歧义的词语,将明确指明龙芯处理器使用“龙芯指令系统”。目前的龙芯指令系统主要由以下四个部分组成。(1)MIPS III指令集中不涉及MIPS专利的部分指令;(2)龙芯1号或龙芯2号自己独有的普通用户态指令,如乘累加指令(MIPS IV中定义了乘加指令,但龙芯2号没有采用)等;(3)部分与处理器结构紧密相关的核心态指令,如对Cache或TLB操作的指令(这些指令一般随结构的不同而不同,即使在MIPS的不同处理器中也是如此)以及在未来的龙芯3号中进行多核之间同步和通信的指令等;(4)龙芯独有的媒体指令。随着龙芯处理器的发展,龙芯指令系统还会进一步增加新指令。对于龙芯1号的产品手册,计算所和龙芯公司也将逐步更正。同时,计算所将继续和MIPS公司协商关于龙芯实现“MIPS兼容”的授权问题。如果最后龙芯取得MIPS的指令系统授权,计算所将进一步实现MIPS指令系统的其他有关指令,并在通过MIPS公司的完整技术测试和许可后,在龙芯指令系统的基础上,说明“MIPS兼容”。最近,部分国外媒体以危言耸听的语气,不负责任地指责龙芯存在侵权的可能,这种做法是极其不负责的。到目前为止,计算所没有从MIPS公司收到任何关于龙芯侵犯MIPS知识产权的通知。
2. 龙芯的“架构”问题
最近,美国In-Stat公司发表在《Microprocessor Report》发表了一篇论文,对龙芯2号进行了详细介绍。In-Stat公司的报告的主要依据是龙芯课题组发表在计算所主办的《Journal of Computer Science and Technology》2005年第2期上的一篇介绍龙芯2号结构设计的学术论文。In-Stat公司在该报告中明确指出,龙芯2号没有实现MIPS公司申请专利的那几条指令。此外,龙芯2号实现了自己定义的媒体指令,没有实现MIPS公司定义并申请专利的媒体指令。In-Stat公司的报告指出,由于龙芯2号只是没有实现MIPS公司申请专利的部分指令,因此龙芯2号的指令系统是95%与MIPS兼容的(95% MIPS Compatible)。因此,部分媒体很不负责任地说龙芯2号的架构与MIPS R10000有95%的相似之处,可能构成对MIPS的侵权。对龙芯的品牌和产业化造成了很坏的影响。从高层概念性的“架构”(专业名词为architecture或体系结构)的角度,目前所有的RISC处理器都是95%甚至以上类似的。例如现在全世界所有的处理器都采用冯诺依曼结构(好多人做研究想突破这个结构,做了几十年没有成功),从这个意义上来说,所有处理器是100%架构相同的。又如,在 RISC处理器中,从64位、四发射、有关功能部件的设置、有关队列(如发射队列,Reorder Buffer,访存队列)的设置、指令和数据Cache的设置这些方面来看,在这些概念性的“架构”方面,MIPS处理器、IBM的处理器、SUN的处理器、HP的处理器、DEC的处理器等等,都是95%以上类似的。打个比方来说,我们不能根据两套住房都是三室一厅,都有两个房间朝南就认为这两套住房 95%是一的。但从与实现相关的微体系结构(Microarchitecture)的角度,则不同的设计师各显神通。龙芯2号作为完全独立设计的处理器也是如此。例如,MIPS R10000是5-7级流水线,而龙芯2号是9级流水线;MIPS R10000的媒体指令与龙芯2号的媒体指令完全不同;MIPS R10000在发射指令时把指令分成定点指令、浮点指令、和访存指令三组,而龙芯2号在发射指令时把指令分成定点(包括访存)以及浮点两组;龙芯2号实现了可执行保护以防止黑客或病毒的缓冲区溢出攻击而MIPS R10000没有;MIPS R10000和龙芯2号的转移取消机制很不一样,等等。可以说,在涉及具体实现的微体系结构方面,龙芯2号和MIPS R10000很难找到相同的地方。这点,在In-Stat的报告中也进行了充分的阐述。在In-stat的报告中,对龙芯2号和MIPS R10000的一些结构参数进行了比较,得出龙芯2号在处理能力上与MIPS R10000类似甚至超过的结论。有些媒体就说龙芯2号的“架构”与MIPS R10000有95%类似,是很无知的、很不负责任的、很可笑的,其基本错误在于混淆了表示象指令系统、多发射、RISC这些概念的“架构”和表示具体实现的“架构”的关系。这种行为,使人误认为中国人自己没有能力设计自己的处理器,需要通过抄袭别人的结构来实现。事实上,到目前为止,运行(部分)MIPS指令的最高性能的处理器正是正在实现中的龙芯。值得指出的是,计算所很注意用知识产权的武器保护自己,在龙芯1号和龙芯2号的设计过程中,已经申请了20多条与龙芯处理器体系结构相关的专利。其中部分已经得到了授权。

3. 几点感受和希望
应该说In-stat公司给《Microprocessor Report》写的报告除了有点作为美国企业的危机感对龙芯2号的某些内容有一定程度的夸大以外,基本上还是比较客观的。他们站在美国的角度宣扬一下龙芯威胁论,是可以理解的,我已经看到过好几篇这样的文章。国但是国外有少数人,尤其是一些霸权主义者,杀了我们的同胞,烧了我们的圆明园,他们不觉得侵犯了中国人的权利;占领我们的钓鱼岛,他们不觉得侵犯了中国人的权利;最近在伦敦有一个中国元代的青花瓷罐拍卖了2.67亿元人民币的价钱,他们一边数钱一边乐,也不去问有没有侵犯中国的知识产权。我们做的东西稍微跟他们挨点边,他们就死了亲爹似地叫,自己当强盗,还要贼喊抓贼。不过我们也是不怕的,毛主席说得好,你打你的,我打我的。我就不信,共产党的天下,人民的政权,帝国主义们、霸权主义们(以及部分走狗们)能够颠倒黑白,翻得了天。可是我们自己不能跟着起哄,为着自己一时利益或逞一时之快,帮着贼喊抓贼,做一些亲者痛仇者快的事情。更不能一听洋鬼子说龙芯可能侵犯人家的知识产权的谣言,就如获至宝地跳出来信谣传谣。龙芯还是个孩子,需要大家来关心才能长大。我们做龙芯不容易,尤其是核心技术,产业链很长,虽然我们在技术上取得了一些突破,但真正要在市场上取得成功,还有很长的路要走。龙芯课题组很多人都每周工作七、八十个小时,常常连续一周不回家,春节也在实验室里过,再苦再累再烦也咬牙忍着,辛苦一年只能挣到自己的大学同学在国外一个月的工资,为的就是让中国拥有自己的核心技术,让中国的国家安全更有保障,让我们的孩子不再用八亿件衬衫换一架飞机。可以肯定的是,不管遇到多大的困难,计算所尤其是龙芯课题组都会一如既往地为龙芯的研发和产业化的最后胜利而努力拼搏奋斗。毛主席曾经说过,我们的同志,在困难的时候,要看到成绩,要看到希望。这句话我们是牢记在心的。不管是人为设置的还是工作中碰到的困难,我们将一如既往地克服;不管是多么强大的对手,我们将一如既往地战胜。我相信,凭着中华民族的伟大智慧,依靠全中国人民的努力,总有一天,我们的子孙后代能够让美国人拿8亿条牛仔裤来换我们的一架飞机。毛主席说过,中国人民已经站起来了,是不好惹的;惹翻了,是不好办的。最后,我要请求媒体的朋友和网友,多多支持龙芯,对龙芯要多些宽容,不要跟着洋鬼子一起谩骂。以后见到类似的情况,转载或发表关于龙芯的新闻,首先想一想,会不会对龙芯有害,会不会对我们国家的自主创新有害。最好是跟我们沟通交流一下。谢谢。

(1个打分, 平均:5.00 / 5)

龙芯CPU(2)–我们的龙芯2号

【编者注:我曾经详细收集了中国龙芯CPU的许多资料,现开始做一些整理并发布于此。总体而言,龙芯对中国信息技术的发展战略很重要。用李国杰院士的话讲,做龙芯是一个国家战略行为,而非一个单纯的技术 和(或)商业动作。我深以为然。当然,这并不代表编者和(或)弯曲评论全部同意胡伟武的技术或者其他的观点】

【作者:胡伟武,中国科学院计算所,2003年11月】2003年10月16日深夜,喧嚣了一天的计算所北楼终于沉寂了下来,我独自坐在北楼105房间忐忑不安地等待着。刚才还有郑为民和一个学生跟我在一起,几分钟前我派他们到后面的芯片小楼取逻辑分析仪去了。与北楼隔着一个篮球场的芯片小楼里还有10来个课题组的弟兄,他们都象我一样忐忑不安地等待着。

17日凌晨0点30分,楼道里传来了有节奏的脚步声,在空旷而寂静的楼道里显得特别有力。脚步声越来越近,我的心一下子提了起来,咚咚的脚步声象敲在我的心上,因为我知道,我们的狗剩2号回来了。

105房间的门被推开,张珩风风火火地闯了进来,手里抱着一个方盒子。他是我专门派到上海去封装厂家取狗剩2号芯片回来测试的。我们小心翼翼地打开盒子,几十片狗剩2号芯片象等待检阅的士兵一样整齐地排列在专用的包装盒里。一个电话拨到芯片小楼,不到两分钟,105房间就聚集了六、七个人,他们都是下午刚刚成立的联调组的成员。

我挑了几个芯片,在用万用表对芯片进行一些简单的静态测试后,从中选了一个芯片放到子卡的插槽中盖好,并把子卡插到主板上。小心地按了一下电源开关,显示屏上没有动静,心里一阵紧张。试了几次后,换一个子卡,放上芯片后插到主板上,一按电源开关,显示屏一阵跳动,串串字符如约而至。我们一阵欢呼,刚才提到嗓子眼的心放回到心窝里先。

在启动了一个简单的BIOS系统以后,开始启动LINUX操作系统,一切都很顺利。1点10分,屏幕上出现了LINUX操作系统的登录提示符 “login:”。在拿到芯片的40分钟后,刚才等待时的紧张心情一扫而光。我们赶快打电话到芯片小楼告诉在那里等候的其他同学。钟石强还给我的妻子发了个短信,今晚她也在等待我们的消息。几分钟后狗剩2号收到了出世后的第一个祝福。

4点30分,狗剩2号通过了其他的测试。我们用装有狗剩2号的计算机在我们CPU组的内部BBS上灌了狗剩2号出世后的第一瓢水,并发了几封 EMAIL。我决定狗剩2号的第一次联调先告一段落,拿出放了很久的硅谷的一个朋友送的一瓶XO在芯片小楼的会议室里每人半纸杯庆祝了一下。喝完酒后大家兴致不减,根据事先的约定又打车到天安门广场看升国旗并去毛主席纪念堂向毛主席报告。今年是毛主席诞辰110周年,我们这款芯片的名字就叫MZD110。

6点25分,我们又一次站在天安门前的国旗杆下,看着红彤彤的国旗在国歌声中冉冉升起。去年在接受《东方之子》节目采访时,他们曾问我在狗剩1号研制成功后看升国旗时心里想什么,我那时真忘了想什么了。这次我试图去想一些有意义的事情,比如什么豪言壮语之类的。可是面对国旗,脑袋里一片空白,只是在国旗猛地串上杆顶的那一刹那,24小时前杨利伟走出神舟5号舱门冲大家挥手的画面突然出现在我脑海中,以至于在去前门吃早饭的路上这个画面还久久浮现在面前,挥之不去。

在2002年9月28日龙芯1号的发布会上,李国杰所长曾经引用《易经》中的话说:“万物生于有,有生于无”。如果说狗剩1号解决的是从0到1的问题的话,那么狗剩2号要解决的是从1到10的问题,即狗剩2号的性能至少是狗剩1号的10倍以上。事实上这也是我们在申请中科院知识创新工程重大项目和863计算机软硬件主题重点项目时唐志敏提的指标。在这两个项目厚厚的申请书和合同书中,我只记住了两个数字,一个是主频500MHz以上,一个 是SPEC CPU2000的值达到300分以上。从承担项目之日起,这两个数字就象两个紧箍咒一样紧紧地箍在我的头上(我一直认为这个项目是863项目中立得最成功的项目之一,只用 两个数字就把要做的事情表达得足够清楚了)。

从现在看来,主频500MHz以上还好办一些,下死工夫总是可以做到的,用0.13微米的工艺 更是容易做到。难的是SPEC CPU2000的分值达到300分以上。所谓SPEC CPU2000,就是一组国际公认的标准测试程序,用这组程序在目标机器上运行,根据实际运行时间算出该计 算机的运行速度指标。这种标准测试程序从SPEC CPU89、SPEC CPU92、SPEC CPU95、到 SPEC CPU2000已经发展了好几期。其中SPEC CPU2000覆盖的应用面最广,包括文件压缩、 FPGA布局布线、编译器、组合优化、国际象棋、文字处理、计算机视觉、编程语言、解释器、数据库、布局布线模拟器、量子动力学、浅水模型、三维势场求解、偏微分方程、三维图形库、计算流体动力学、图象识别/神经网络、地震波传播模拟、计算化学、数论/素数测试等等,光源代码就有上百万行。打分的标准是把这组程序在Sun公司一台300MHz的四发射Untra Sparc II 上运行的时间做为标准运行时间,其分值为100分,其它机器运行时间跟标准时间相比算出相应的分值。一般来说,现在较流行的四发射的主流RISC处理器象 Alpha 21264、MIPS R12000、IBM Power III等在400MHz到500MHz的情况下SPEC CPU2000的分值可以达到300分左右,而Pentium III在800MHz时SPEC CPU2000的浮点分值才200多分。狗剩2号要达到300分,至少要与1GHz以上的PIII或PIV的性能相当。因此,虽然做500MHz虽然也不容易,但更难的是SPEC CPU2000的分值达到300分以上。

提高处理器的性能,提高主频和优化软硬件结构不可偏废,光强调主频和光强调结构都是不行的。就象要把100根木头从A地扛到B地,甲每10分钟一个来回,每次扛1根木头;乙每20分钟一个来回,每次扛4根木头;丙60分钟一个来回,每次扛6根木头。我们不能根据甲跑得快(主频高)就说甲的性能最高,也不能根据丙每次扛得最多(每拍执行的指令多)就说丙的性能最高,性能是一个综合的东西。当然,还有其它要考虑的因素,如甲乙丙三人每小时的报酬(处理器的功耗、面积)等。虽然狗剩1号的成功对我们来说是一个巨大的进步,但有一件事我一直深引以为恨,那就是狗剩1号的性能没有达到预想的目标。

虽然主频不低,但跑起程序来比起类似结构的RISC处理器以及相同主频的PII还有一些差距。SPEC CPU2000的分值也不高。我曾经整日整夜地泡在机房运行各种测试程序,并试图通过软件优化的方法提高性能。虽然取得了一些效果,但不理想。后来的性能分析表明,有些狗剩1号性能瓶颈其实完全是可以通过简单的优化克服的,可惜当时项目推进得太快,没有时间做充分的性能分析和优化。这件事使我极其郁闷,因此把性能分析不够作为狗剩1号设计过程的一个重要教训,并发誓在狗剩2号的设计中要一血前耻。知耻近乎勇,后来狗剩2号步步为营的性能分析果真为狗剩2号提高性能发挥了巨大作用。在中科院领导对我们承担的龙芯2号重大项目进行立项审查的会上,李老师、唐志敏和我在向院党组汇报后准备离开时,江院长追出来跟李老师说:“李院士,我就把宝压在你身上了”。在863计算机软硬件主题专家对我们承担的龙芯2号项目进行立项审查的会上,我做完报告后,专家组组长怀进鹏老师曾声色俱厉地说:“胡伟武,这个项目是863计算机软硬件主题最大的项目,完不成任务提头来见!”这两件事给我很大的触动,让我想起上甘岭战役前夕彭德怀曾对秦基伟说:“我们要对朝鲜的历史负责”。

阅读全文»

(1个打分, 平均:5.00 / 5)