龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 945|回复: 0

[两万字特稿]致龙芯15周年 胡伟武披露龙芯3号开发历程(四)

[复制链接]
发表于 2016-10-31 22:45:04 | 显示全部楼层 |阅读模式

2016年3月中旬,3A2000进行再次改版,这次改版是全掩膜改版(原来是三个芯片拼了个全掩膜),除了进一步增加寄存器堆字线和位线的延迟差以外,还修改了其它几个小问题。2016年7月下旬,芯片回来后经测试,原来的定制模块问题不复存在,芯片功能正常,而且ATE测试与功能测试一致性好。目前3A2000已经进入量产阶段,其中经过测试支持通过直连形成多路服务器的芯片成为3B2000。

在随后的应用推广中,3A2000与3A1000保持引脚兼容以及软件兼容体现出巨大优越性,很多客户直接在原来3A1000的主板上换焊3A2000芯片,只需通过简单的BIOS和内核调整,就可以大幅度提升性能。龙芯的整机厂家迅速升级了部分原来基于龙芯3A1000的计算机并进行了应用试点。在2016年6月进行的某办公应用试点验收会上,有关部门和专家认为,基于3A2000的计算机使自主化办公应用从“基本可用/可用”提高到“基本好用/好用”。

龙芯3A3000是在2015年5月临时安排研制的。2015年5月初,我去常熟跟龙芯梦兰公司的张福新、吴少刚等人讨论3A2000整机解决方案的研发。大家对3A2000大幅度提升性能都很高兴,大大增强了信心。同时张福新他们提出,由于我们使用境内的40nm低速工艺,而引进ARM和威盛的CPU都使用境外28nm高速工艺,虽然3A2000在微结构上已经超过了引进的ARM和威盛的CPU,由于主频偏低,3A2000在综合性能上还是吃亏(1.0GHz的3A2000处理器核SPEC CPU2006分值为6-7分,而1.6-2.0GHz的ARM和威盛处理器核SPEC CPU2006分值达到8-10分),建议龙芯也尽快使用境外工艺提升频率。经过认真讨论,我们认为如果我们采用Intel的Tick-Tock(嘀嗒)研发策略,应该可以很快推出主频1.5GHz以上,综合性能超过2GHz的ARM和威盛的处理器。Tick指的是结构不变,通过工艺优化提升性能;Tock指的是工艺不变,通过结构优化提升性能。Tick-Tock策略可以把两个芯片流水推进,加快进度的同时降低技术风险。

3A2000主要是通过结构优化提升性能,属于Tock;3A3000则直接采用3A2000的源代码,通过工艺优化提升性能,同时继续保持与3A2000的引脚兼容,属于Tick。因此,3A3000在功能上没有什么风险,主要是工艺移植的风险。当然,3A3000在微结构上还是做了适度增强:一是结合3A2000的性能瓶颈分析把定点/浮点发射队列从16/24项增加到32/32项,二是把最后一级Cache从4MB提高到8MB。到6月底,完成了RTL源代码修改,随后全面展开物理设计。

3A3000物理设计中继续需要定制包括HT-PHY、DDR-PHY、锁相环、多端口寄存器堆、CAM等全定制模块。由于3A2000中的全定制模块出过问题,3A3000的全定制模块检查特别严格。除了加强设计仿真外,还让原龙芯全定制组的组长杨旭(现在是龙芯中科公司全面负责生产的副总)重新披挂上阵,进行背靠背的复查。紧赶慢赶,于2016年1月底完成了全定制设计的签核和复查评审。

3A3000物理设计中另一个难点是时序收敛。3A3000使用的28nm FD SOI工艺晶体管确实比3A2000使用的40nm LL快60%左右,但连线延迟大,而且互相干扰也大,废了很多周折。杨梁率领物理组在2016年春节期间也没有休息,终于在2016年2月中旬交付流片。

2016年6月端午假期期间,龙芯3A3000完成晶圆生产并进行了中测,刚开始比较顺利,已经调试完成大部分向量,只是测试我们自己研制的锁相环时发现锁相环输出时钟有不稳定现象。6月中旬拿到盲封芯片,测试发现只有在低于0.8V的低电压下芯片才能正常工作,经过两周的分析发现还是寄存器堆的问题,这次是读出电路的问题,读电路译码时产生了毛刺,把别的字的内容耦合到读出字内容来了。好在该问题只需要修改一层掩模版。

2016年9月13日,修改寄存器堆问题的改版芯片回来。这次测试非常顺利,很快就运行了SPEC CPU2000和SPEC CPU2006等大型程序,均未发现异常。主频可以达到1.5GHz以上。进一步的测试结果比想象的好,一是内存频率可以达到750MHz以上,而且信号眼图还非常好,STREAM测试带宽达到13GB/s;二是虽然主频只提高了50%,但综合SPEC CPU2006和SPEC CPU2000分值可以提高60%,其中SPEC CPU2006单核分值为定点11分以上、浮点10分以上,四核分值为定点36分,浮点33分;三是可以运行在很低电压下,例如运行在1.0V电压下主频1GHz时功耗还不到3A2000运行1GHz时的一半。对于复杂应用(如打开几十MB的复杂文件),3A3000的用户体验比3A2000有显著提高。

2016年10月17日,龙芯3A3000通过了龙芯公司质量体系要求的商业级产品的鉴定检验摸底测试(工业级产品鉴定检验工作正在同步展开),表明龙芯3A3000可以进入批量生产状态。目前3A3000已开始小批量生产,其中经过测试支持通过直连形成多路服务器的芯片成为3B3000。

龙芯3A3000运行SPEC CPU2000定点分值1100多分,浮点分值1700多分,运行一遍不到一个半小时(如果使用计算所的编译器进行优化,定点和浮点分值还分别可以提高15%和30%以上)。回想2002年龙芯1号刚诞生时,运行一遍SPEC CPU2000需要近三天时间,龙芯2C由于SEPC CPU2000分值没有达到863课题合同要求的300分而没有完成验收,龙芯2E费了九牛二虎之力才勉强达到500分,真是“向来枉费推移力,今日中流自在行”。

在3A2000和3A3000的研制过程中,有两点深刻体会。一是CPU的可调试性设计很重要,3A2000和3A3000的全定制问题和若干其它问题的定位,都是基于通过JTAG接口控制的预先设计的调试模块,该调试模块可以控制和读出CPU内部所有触发器和RAM的内容,比起以前调3A1000、3B1000和3B1500方便多了。二是境内工艺的一致性比境外工艺有一定差距,包括不同批次的一致性,仿真模型和实际晶体管参数的一致性都和国外工艺有一定差距,设计时要多留些裕量,蒙特卡罗仿真也要把参数波动范围设大一些。

3A3000研制成功对自主CPU来说具有里程碑意义。首先,3A3000的通用处理性能已经跨过了国际通用处理器性能的第一个门槛,其单核SPEC CPU2006性能已经不低于ARM用于服务器的高端处理器、Intel的低端系列(凌动系列)处理器以及威盛处理器(这些处理器在1-4核环境下2GHz时单核SPEC CPU2006性能一般在8-10分之间,如果核数更多,由于最后一级Cache巨大,性能会有所提高),而且3A3000的访存带宽已经与AMD以及Intel的高端系列(酷睿系列)持平。这样的性能玩复杂的3D游戏可能还有差距,但对于以党政办公为代表的事务处理应用是足够了(如果软件做适当磨合优化,3A2000就够了)。龙芯3A3000跨过了国际通用处理器性能的第一个门槛后,也为下一步跨越第二个门槛(即达到Intel和AMD主流处理器的性能)打下了坚实的基础。其次,3A3000的通用处理性能超过了目前靠引进ARM和威盛技术发展的国内同类(四核)CPU。“十一五”开始的自主信息化应用试点发现第一代自主CPU通用处理性能不够的问题后,国内CPU研制单位均展开了第二代CPU的研发,并衍生出三条不同的技术路线。第一条是以龙芯和申威为代表的“研”的路线,即通过分析第一代产品应用中发现的问题进行自主研发升级。第二条是“攒”的路线,即使用国外的处理器核“攒”SOC,并在此基础上对处理器核进行局部优化。第三条是“O(ODM)”的路线,即中国人掏钱请外国人干,目前主要是把国外/境外已有的现成设计直接拿过来换成中国的品牌。由于自主研发路线在“十一五”期间走了弯路,很多人对自主研发路线产生了疑虑,觉得此路不通,因此“核高基”在“十二五”期间主要支持以ARM的处理器核“攒”SOC的路线和“O”威盛的路线为主。一是钱多,二是引进别人的产品省时间,加上龙芯3A2000与境内工艺磨合,在产品化方面花了较多时间,从2014年年底到2016年年初大约一年半的时间,采用引进技术的CPU大肆攻击自主CPU性能不行,要求在已有的自主信息化试点中换掉龙芯(而且确实换掉了一些),给龙芯造成很大压力。

3A3000的通用处理性能超过引进的ARM和威盛技术的CPU,加上前些日子使用申威处理器的“太湖之光”高性能机取得世界第一的好成绩,充分说明不论是通用CPU还是高性能机专用CPU,自主研发的道路都是走得通的,不仅安全性好,性能也高。尤其是通过自主研发形成持续改进能力后,未来的后劲更足。可以说,在与引进CPU的技术路线的斗争中,龙芯3A3000是抗日战争的石牌保卫战,是解放战争的济南战役,拉开了自主CPU战略反攻的序幕。尤其值得指出的是,龙芯3A3000的研制没有得到任何国家项目的补助,是完全由企业自己掏钱研制的自主通用CPU,也具有里程碑意义。

根据Tick-Tock策略,我们制定了龙芯3号系列下一步研制计划。四核龙芯3A4000为Tock,继续使用目前的28nm工艺,争取主频达到2GHz以上,SPEC CPU2006单核分值达到20分以上。3A4000的主要结构优化包括:增加256位的向量指令,增加片内安全机制,以及进一步通过微结构优化提高流水线效率,争取每GHz的单核SPEC CPU2006分值达到10分(目前3A3000每GHz的单核SPEC CPU2006分值为7分,ARM的高端处理器为5-6分,X86主流处理器为10-15分)。目前3A4000的研制工作已经展开。在3A4000之后将研制Tick阶段的新一代处理器,初步考虑使用16nm或14nm的工艺以及3A4000的处理器核研制16核的龙芯3C。经过3A4000的又一轮优化,龙芯的处理器核微结构已经基本到位,是时候把2013年5月暂停的16核龙芯3C重新提上日程了。

十年以来,我们先后研制了龙芯3A1000、3B1000、3B1500、3A2000/3B2000、3A3000/3B3000五款龙芯3号系列芯片,大的流片版本12个,小的流片版本(只改几层掩膜板)6个,碰到了各种各样的问题,经历了很多坎坷。为什么龙芯CPU的研制经历这么多坎坷呢?除了龙芯的质量流程需要持续改进以外(最近结合3A2000和3A3000的全定制问题正在举一反三,并完善全定制流程),究其根本原因,是因为我们坚持芯片中的核心模块自己研制。前面提到的龙芯3号研制过程中碰到的问题,都是包括CPU、HT控制器、内存控制器、全定制寄存器堆、全定制锁相环等核心模块内部的问题,并不是把这些模块“攒”在一起产生的问题。这些问题,如果购买商业IP(如ARM的CPU,Imagination的GPU等)来“攒”芯片一般不会碰到。自从2001年开始研制CPU以来,我直接或间接负责了近百次流片,流片后碰到的问题除了极个别外,都是核心模块内部的问题。


本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-1-23 19:01 , Processed in 0.167533 second(s), 18 queries .

快速回复 返回顶部 返回列表