内容导航:第[01]页:[“福珑”电脑出炉——引发中国芯再次关注] 第[02]页:[[福珑迷你电脑赏析]] 第[03]页:[[中国计算机工业的历史]] 第[04]页:[[半个世界的期待]] 第[05]页:[[如何确立中国芯发展方向]] 第[06]页:[[听开发者谈龙芯一号]] 第[07]页:[[听开发者谈龙芯二号]] 第[08]页:[[龙芯系列最新型号——龙芯2E]] 第[09]页:[[龙芯新命名及2E参数图表]] 第[10]页:[[首份龙芯2E测试报告现身]] 第[11]页:[[认清真假“太子”]] 第[12]页:[[龙芯产业化联盟]] 第[13]页:[[龙芯产品价格透视]] 第[14]页:[[半导体行业市场与经济发展]] 第[15]页:[IC产业人才培养与教育] 第[16]页:[龙芯的远景分析]]
[龙芯一号简介]
龙芯(英语:GODSON)是中国科学院自主开发的通用CPU,目前分为两代产品。
[龙芯一号]
在龙芯一号设计开始时,提出了“高起点,一步到位”的要求。所谓高起点是指尽可能采用先进的制造工艺。第一次设计和流片生产CPU就跳过了0.35、0.25微米工艺,选用了当时代加工厂主流的0.18微米工艺。做出这种决策不是盲目地碰运气,而是通过与硅谷许多有经验的工程师深入调研分析流片成功的可能性后做出的,从某种意义上讲,这也是利用了“后发优势”,“借树开花”。所谓“一步到位”,不是指第一次设计就做出性能超过P4的CPU,而是针对当时国内有些单位还在启动研制386、486的形势,要求在微体系结构上有创新,用国际先进水平的体系结构实现64位浮点运算,尽可能实现技术上的跨越式进步,而不是从模仿20世纪80年代技术开始一步一步爬行,并且一开始就强调正向自主设计,不采取解剖别人芯片反向设计的路线。“一步到位”的另一层意思是不做供鉴定用的实验室样片,而是要确保万无一失,经得起产品检验,做成可批量生产的芯片。
龙芯一号启动时,最重要的决定是要不要与国外主流系统兼容,如果要兼容与哪一家兼容?应当说作出必须兼容的决定在很大程度上受到曙光服务器成长过程的启发。曙光一号服务器和曙光1000大规模并行机开始走的是一条不完全兼容的路,在AT&T Unix和Mach OS基础上分别研制了自己的并行操作系统。尽管符合POSIX标准,有自主知识产权,可以得国家最高的科技成果奖励,但数据库厂商和第三方应用软件厂商不愿意花功夫为曙光机移植软件,曙光机只能卖给自己有源程序的用户,市场上成千上万种应用软件用不上。冷酷的事实教育了我们,为了充分发挥后发优势,利用已有的巨大软件资源,与主流系统完全兼容是迅速扩大市场份额的良策。
经过对X86、PowerPC、MIPS、SPARC等多种指令系统的仔细分析,最终选择了MIPS指令系统。MIPS公司不同于Intel、SUN和IBM,它不是IDM公司,自己并不生产销售芯片,而是以卖License和服务为营业范围,它不但不像Intel公司那样反对别人做兼容芯片,而是支持其他厂家做MIPS兼容芯片。世界上许多大公司,如生产路由器的CISCO、生产游戏机的SONY等都采用MIPS指令系统。
与兼容策略相关还有一件大家十分关心的事,那就是如何避开专利。在研制龙芯一号过程中发现指令系统本身不是专利,而且几乎没有一项概念性的专利,例如Cache技术、多发射技术等,所有专利几乎都与具体实现技术有关。设计CPU是先通过译码器变成自己定义的统一中间代码,所有的功能部件执行中间代码,与原来的指令系统无关。龙芯在设计中没有侵犯任何专利而且自己申请了十余项发明专利。
龙芯狗剩-1的物理设计主要包括三个阶段
2001年11月到2002年1月为启动阶段,主要完成环境的建立和工具的初步学习;
2002年1月至4月为第二阶段,RTL基本确定,对整个设计的流程有了初步了解;
2002年4月至7月为第三阶段,实质性设计阶段。
龙芯一号
主频:200MHz-266MHz
指令系统: MIPS III
实现方法: .18um CMOS
定点字长:32位
浮点字长:64位
一级指令cache: 8KB
一级数据cache: 8KB
精确中断处理: 支持
浮点标准: IEEE754
体系结构技术特性: 支持寄存器换名,动态调度、乱序执行
工作电压: I/O 3.3 内核 1.8V
功耗: 0.5W-1W
总线频率:75MHz-133MHz
封装方式: PQFP/CQFP
ESD保护: 有
在龙芯一号的发布会上公布了其测试性能,定点/浮点运算超过2亿指令/s.SPEC CPU2000的测试中,SPECint-base=18.5 SPECfp-base=24.8,性能和测试的SGI O2(基于180MHz的双发射的MIPSR5000)的性能相当,达到了90年代中期的国际水平。
当一群熟悉指令流水线、多发射、乱序执行、 动态调度、寄存器重命名、转移猜测、CACHE、精确例外等等的人面对诸如Wireload model、综合库、物理库、设计规则、扫描链、Steiner树、顶层约束、时钟树、P diff 、N diff、多晶、闸流效应、防静电、串扰、电流密度、压降等等物理设计的概念时,就象熟悉种地的刘姥姥刚进大观园,觉得新鲜而不知所措。
2002年8月10日清晨6点零8分,“login:”的字样如约而至地出现在用“龙芯-1”作CPU 的计算机屏幕上。随着一阵欢呼从蚊子成群的中科院计算所北楼105房间传出,中国人结束了只能用洋人的CPU造计算机的历史。我抱着键盘,迫不及待地登录进去,用vi编辑龙
芯-1产生的第一个文件,其中两段是这样写的。
The historical time of 6:08 on 2002.8.10 ends an era while begins a new one。 The day in which we make computer with only foreign CPUs is gone with the wind of the morning of 2002.8.10。With tears and joys,we announce the successful running of LINUX (Kernel 2.4.17) with the Godson-1A CPU。 The great ecstasy at this moment makes all of our exhausting efforts of the past year be over paid。Though this is only a little step of a long march,it indicates the glorious future of our own CPU.
上述两段话,表达了我们对龙芯的良好祝愿和坚强信心。
在五十年代计算所做出中国第一台计算机103机时,张劲夫给这台计算机起了个名字叫“有了”,现在我们也要解决通用处理器“有了”的问题。 ——龙芯研发小组组长胡伟武
在龙芯一号测试和使用过程中,也发现了很值得以后吸取的教训:
一是CACHE太小(指令 CACHE和数据CACHE都是8KB,二路组相连)(这与FPGA容量有关,设计中已经使用了FPGA的大部分面积),CACHE访问策略也过于保守,导致对于一些大型应用难以发挥他的运算性能。尤其是对于象SPEC CPU2000的ref规模的程序,在200MHz时,狗剩取得的最好值是56,最差值才11。
二是编译优化不够,没有对gcc编译器专门针对狗剩1号的后端进行优化,而实际的计算机厂家都有针对自己处理器的编译器。
三是有4条访存不对齐的指令没有硬件实现,而是通过操作系统模拟来执行,这样做除了对部分程序的性能有影响外,对于象VxWorks这样只有目标码的程序确实要花费了一翻心血。
同时在龙芯1号调通后的软件开发过程中,也获得了一个深刻的体会,就是系统开发比CPU设计工作量要大得多。