龙芯开源社区

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

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

[复制链接]
发表于 2016-10-31 22:38:26 | 显示全部楼层 |阅读模式
       现在回头看,龙芯3A1000的研制是成功的。3A1000是我国第一个四核CPU芯片。在3A1000的研制过程中,我们掌握了多核CPU的片内互连及Cache一致性技术,以及片间多路互连技术。直到今日,龙芯仍然是唯一能支持多路服务器的自主CPU。在最近国外CPU企业对中国企业的CPU技术授权中,支持多路服务器的技术受美国政府限制还是不能给中国的。龙芯3A1000的处理器核沿袭了龙芯2E和龙芯2F的处理器核结构,虽然在MIPS64兼容性方面有较大改进,性能只进行了局部优化。龙芯3A1000处理器核的性能略高于Pentium III的水平,在2006年龙芯2E刚出来时这个性能还说得过去。龙芯3A1000仍沿用该处理器核有点慢了,但在应用比较固定的很多领域还能用,按理说龙芯的下一款CPU应该致力于处理器核的性能优化,大幅度提高通用处理性能,但在学院派的思想主导下,随后的龙芯3B走了弯路,使龙芯遭受了挫折。
        龙芯3B的研发得到“核高基”重大专项的支持,是在龙芯团队转型成立公司(龙芯中科技术有限公司)以及有关部门大力展开自主基础软硬件应用试点的背景下展开研制的。2010年把龙芯课题组转型成立公司是下了很大决心的,当时已认识到不能脚踩两只船,办企业和做研究不一样,即使呕心沥血,也是九死一生,因此一定要专心,要求绝大多数技术骨干都从计算所辞职。像张戈25岁就已经是副高职称,是学术上很有前途的苗子,也毅然从计算所辞职。下这么大决心,与我当时担任全国人大代表,对中央以企业作为创新主体,科技创新要为经济社会发展服务的精神非常了解有很大关系。尤其是在“十七大”报告中,传统的“科教文卫”不再单独作为一个板块,科技创新直接在经济发展的第一部分来描述,对我触动很大。龙芯公司的成立得到很多领导专家的支持。除了李国杰所长的大力支持外,路甬祥院长专门批示,要求科学院有关部门落实龙芯团队的股权激励。原国家外专局局长马俊如从2006年起就曾多次对我说,龙芯在科学院里面已经做得很好了,不能再好了,要想更好,就必须下海办企业;在成立企业后马局长又给了我很多指导。工信部的电子司司长丁文武也给了我很多鼓励。
      龙芯3B的研发工作在2008年底龙芯3A交付流片后开始全面展开。首款龙芯3B1000继续基于65nm工艺,目标主频800MHz-1GHz,八核结构,每个核包含两个256位向量部件,峰值浮点性能达到128GFLOPS,这在当时处于世界领先行列。龙芯3B1000于2010年6月20日左右流片,2010年11月底回来第一批芯片。但第一批芯片回来测试并不顺利,连操作系统都启动不了。很快就找到了原因:由于芯片可测性设计部分的逻辑设计错误,在功能模式下误把内存引脚置为测试状态,导致芯片访问不了内存,通过FIB(用离子束改变硅片上的连线)修复后功能正常。
      这是一个重大的打击,龙芯历史上从来没有犯过这样简单的错误,而且在同一时期流片的龙芯1A、龙芯2I等芯片也出现了由于简单工作失误引起的错误。究其原因,是龙芯团队在2010年初从课题组管理机制转向公司管理机制的过程中,原来“作坊式”的设计流程被打破了,“工业化”的设计流程没有建立起来。在课题组阶段,我作为课题组长,每颗芯片从结构设计、逻辑设计、功能验证、可测性设计、定制设计、物理设计各个环节从头盯到尾,及时协调各组的配合,关注每一个细节,因此没有出现管理上的错误。而在3B1000的研制过程中,龙芯课题组转型成立了龙芯公司,我的主要精力转向公司,芯片研发的总协调人缺位,导致频频失误。痛定思痛,从此我着手芯片研制的质量体系建设,建立了“五步法”(立项、方案、签核、测试、结项)研制过程,并详细规定了每个阶段的研发和审核内容。在此后龙芯公司进行的几十次流片中,没有出现过严重的质量问题,而且比我作为课题组长天天盯着效率高很多。
     龙芯3B1000首款流片不成功促使我们马上进行改版,好在只要改一层金属,时间和费用上都比较省。3B1000的第一次改版2011年2月初流片,7月初回来,调试比较顺利。但在压力测试时又出现死机现象,经过几个月的攻关发现又是死锁问题。大致机理是一个处理器核访问其它结点的内存时,写地址和写数据是分开发出的,结果在另外一个结点的处理器核也过来访问内存,而且同时有几十个这样的互相访问时,写地址过去了但写数据互相堵住,导致死锁。避免死锁的办法是要求写地址和写数据保持原子性,即必须一起发出和传输。为此龙芯3B1000进行了第二次改版,于2011年12月初流片,2012年4月底回来。从此达到稳定状态。
      在掌握65nm工艺的基础上,我们于2009年11月开始评估32/28nm工艺,并准备把它作为龙芯CPU的下一个工艺结点。2010年12月选定意法半导体与三星合作的32nm工艺并开始八核3B1500的设计。3B1500基于3B1000的设计,主要通过工艺升级提高性能,同时做了局部的性能优化,尤其是在处理器核中增加了私有二级Cache。2012年1月中旬完成3B1500的设计并交付流片。2012年8月底拿到样片,初步测试正常,频率从3B1000的900MHz提高到1.25GHz(最高可达1.5GHz)。在经过测试后对该芯片进行了万片规模的小批量生产。在应用验证过程中,出现了在很大的应用压力下个别芯片不稳定现象。刚开始觉得是个体问题,后来出现的次数多了,开始于2013年1月31日组织人员攻关定位问题,查找机理。也是每天晚上召开例会讨论,安排各种尝试,在这个过程中发现了几个软硬件磨合的问题并通过软件调整后,出问题的概率小了很多,但问题如幽灵般还在。直到2013年4月12日,才抓到了该问题。这个问题是从3B1000到3B1500改版过程中引进的,为了提高性能,处理器核收到多个维护Cache一致性的无效请求时,原来每两拍才能处理一个,改成可以连续处理,导致清除LL/SC同步指令的同步位llbit时错了一拍,误把IO DMA引起的Cache无效请求当作0号处理器核的Cache无效请求(IO DMA的编号刚好为0,与0号处理器核区分不开),通过软件调整可以规避此问题。经过批量测试,原不稳定现象消失。
      为了从根本上消除该问题和其它一些小问题,我们对3B1500进行改版。改版时根据生产厂家的建议,工艺从32nm迁移到28nm,于2013年4月底流片,10月底收到样片,功能正常,但成品率极低,与厂家确认后明确是厂家生产问题。厂家又建议我们恢复到32nm工艺流片,并以某种方式补偿此次流片费用,于是又再次改版,于2015年1月底流片,2015年6月下旬收到样片,测试后功能正常,而且成品率正常,目前已经量产。
龙芯3B的研制过程真是一波三折。出现过龙芯从课题组向公司转型过程中的管理问题,生产厂家引起的问题,多核互相访问引起的死锁问题,处理器核Cache一致性引起的问题。在解决了一个个问题后总算取得了成功。
    但龙芯3B的主要问题不在研制过程中,而是刚开始定方向就出了很大偏差。主要问题在于虽然龙芯团队从课题组转型成为了公司,但龙芯3B的研发还保持着学院派导向,过度追求多核以及浮点峰值性能的单一指标,通用处理性能不足,满足不了在“十一五”期间展开的自主CPU应用和试点对性能的要求。
龙芯3B在学术上是成功的,3B1500峰值浮点运算速度达到160GFLOPS,现在拿出来也不丢人,当时在国际上算高的。论文分别被国际顶级会议Hotchips和ISSCC录用,龙芯3B的报告引起了很大反响,美国IT Times对此专门进行了报道,MIT也发表评论,认为龙芯3B的浮点性能超过了同期的Intel处理器。但3B1500的通用处理能力比3A1000提高得不多,通过每个处理器核增加128KB的私有二级Cache以及主频及内存频率的提高,3B1500的单核通用处理性能比3A1000提高了30%-50%,但与国外主流产品的性能差距还很大。
       SPEC CPU是一组国际上公认的测试通用处理器性能的测试程序。2006年SPEC CPU2006刚出来时,厂家公布的SUN的blade服务器单核性能为2-4分左右,高端Pentium IV的分值是10来分。2006-2013年是国外主流处理器通用处理性能高速增长期,在主频不怎么提高的基础上,通过微结构优化,厂家公布的SPEC CPU2006单核分值提高到50分左右,平均提高了5倍以上。当然厂家公布的分值都是经过精雕细刻编译优化(包括使用向量和多核加速)的,一般我们使用gcc编译出来的单核分值需要把这些厂家自己公布的分值打7折左右,大致是20-40分。2013年以后,国际单核性能的提高趋缓,每代提升5%就不错,已经到了天花板。SPEC CPU先后发展了1989、1992、1995、2000、2006五个版本,开始时每三年更新一版,后来五、六年更新一版,到2006年后就没有更新。从中也可以看出,CPU的通用处理性能到2010年前后已经到了天花板,运行SPEC CPU2006的时间就够长了。
      “十一五”期间,多核CPU成为国际学术界的热点研究方向。因此,学院派思想主导的国内CPU在“十一五”期间都放松了单核性能的提高,而是转做多核,而且核数做得比国外还多。2006年研制成功的龙芯2E的通用处理性能与市场上主流X86处理器差1-2倍(与龙芯2E微结构相同的龙芯3A1000在900MHz时SPEC CPU2006单核分值为定点2.4分,浮点2.3分),但龙芯CPU的单核性能从2006年的龙芯2E到2013年的龙芯3B1500只提高了50%左右;而在此期间市场主流X86处理器的单核通用处理性能提高了5倍以上。也就是说,“十一五”期间我国CPU通用处理性能被国外大幅度拉开了距离,从相差1-2倍到相差一个数量级。
       技术上的差距体现在市场上就是不好用。“十一五”期间,国家有关部门在涉及国家安全的领域开始了自主CPU应用试点,大量的应用往基于自主CPU和操作系统的计算机上移植。在2011-2013年的三年中,以嵌入式计算机为代表的装备类应用取得了不少成功;而以通用PC和服务器为代表的信息化类应用虽然通过基础软硬件的磨合优化取得了较大进展,但由于自主CPU的性能基础与国外产品有数量级差距,在很多应用中遭遇性能瓶颈。
      由于自主CPU的通用处理性能不够,2013年起,“核高基”基本上放弃了CPU自主研发路线,转而支持引进国外CPU技术的路线。以IBM、AMD、威盛、ARM为代表的国外/境外CPU趁虚而入,纷纷寻求与国内企业合资或开放技术授权的方式,把原来的产品摇身一变成为自主CPU(操作系统和数据库也有类似情况)。这使得主要靠国家支持进行研发的龙芯CPU陷入了巨大困境。

本版积分规则

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

GMT+8, 2019-9-23 04:16 , Processed in 0.181028 second(s), 18 queries .

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