新宋吧 关注:367,923贴子:28,675,827

致龙芯15周年 胡伟武披露龙芯3号开发历程

只看楼主收藏回复

近日,龙芯中科宣布3A3000四核处理器芯片完成流片并通过系统测试。根据现有的测试结果,龙芯3A3000达到了预定的设计性能目标。其中,综合计算性能方面,在1.5GHz主频下,GCC编译的SPEC CPU 2006定点和浮点单核分值分别超过11分和10分;访存性能方面,Steam分值超过13GBps。 龙芯3A3000的流片成功,标志着我国自主研发的高性能微处理器芯片,可以超越目前引进的同类芯片性能。龙芯CPU首席科学家胡伟武撰文披露了龙芯3号开发的历程。


IP属地:山东1楼2016-10-22 13:01回复
    在龙芯3号研制过程中,作为中法两国在IT领域战略合作的一部分,科技部安排龙芯CPU在意法半导体流片。2006年10月26日,中国科学院与意法半导体在人民大会堂签署了关于龙芯CPU战略合作的文件。基于龙芯2E的成功,意法半导体还花三百多万美元授权费购买了龙芯2号系列产品的授权,其中龙芯的第一个产品芯片龙芯2F于2007年7月31日流片成功,目前仍在大量应用中。后来意法半导体由于自身业务的原因终止了购买龙芯2号系列的产品授权,计算所收回了龙芯2号的产品权利并同意不再收取剩余的三分之一左右授权费,但我们从龙芯2F的研制中学会了意法半导体的芯片质量管理,学会如何把一个样品变成产品。龙芯CPU在意法半导体的流片一直延续了下来,龙芯3A1000即使用意法半导体的65nm工艺流片。
    不记得经历了多少加班加点,龙芯3A1000于2008年底交付流片。只记得流片前的几个月每天晚上十点开例会安排工作。晚上十点例会是非常高效的一种工作方法,会后大家把有关设计在EDA服务器上跑起来再回家,第二天早上上班时刚好跑出结果来;如果是早上上班后开始在EDA服务器上跑,基本上大半天就在等待服务器运行出结果中度过。在此后龙芯CPU问题的攻关中,一直沿袭了晚上例会安排工作的方法。


    IP属地:山东3楼2016-10-22 13:03
    回复
      在掌握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号处理器核区分不开),通过软件调整可以规避此问题。经过批量测试,原不稳定现象消失。


      IP属地:山东5楼2016-10-22 13:03
      回复
        龙芯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策略可以把两个芯片流水推进,加快进度的同时降低技术风险。


        IP属地:山东8楼2016-10-22 13:05
        回复
          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重新提上日程了。


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


            IP属地:山东10楼2016-10-22 13:06
            回复


              正如改革开放进入深水区,容易改的都改完了,剩下都是难改的;创新也进入深水区,容易创新的都创完了,剩下难创新的,需要十年磨一剑的积累。我们的IT产业先学会了用国外的芯片在主板上“攒”系统,后来又学会了用国外的IP在硅上“攒”系统。掌握这些简单技术后,下面该深入到CPU、GPU这些复杂的核心模块中去了。这些复杂的创新不是领导重视、钱多、人多就能一下子干出来的,还需要时间来磨,在探索和试错过程中不断演进。领导重视、人多、钱多可以加速探索和试错的过程,但不能消除这个过程。中国航天建空间站,先来个天宫一号试试看,再来个天空二号(还分两期)接着试,最后再发射正式空间站,也是这个演进的道理,不是缺钱,也不是领导不重视。CPU是超复杂系统,超复杂系统只能走进化论的道路,在产业化实践中通过长期演进发展起来。即使在这个过程中,得到别人的源代码,也只能加速自主研发的进度,取代不了自主研发的工作。更何况复杂系统是很难消化吸收的,即使拿到国外CPU的源代码,每一行都看得明白,但把几百万行代码拼在一起就不知道是干什么的,就像我们可以打开一头猪的大脑看得清清楚楚,但不知道猪在想什么。很多人现在还寄希望于引进国外技术发展我国的CPU,那是因为吃洋鬼子的亏没吃够。须知天上是不会掉馅饼的,要发展以自主CPU和操作系统为代表的基础软硬件,我们必须克服急躁情绪,克服崇洋情绪,发扬愚公移山精神,坚持实事求是作风,在自主创新实践中不断发现问题,在解决问题过程中不断提高能力,才能保障国家安全和支撑产业发展。


              IP属地:山东11楼2016-10-22 13:08
              收起回复
                不管有多少人嘲笑,有梦想总归是好事。


                来自Android客户端12楼2016-10-22 13:09
                回复
                  太长不看


                  来自Android客户端14楼2016-10-22 13:14
                  回复
                    牛逼


                    IP属地:湖北来自手机贴吧17楼2016-10-22 14:21
                    回复
                      可有人想起被汉芯支配的恐惧










                      18楼2016-10-22 14:23
                      收起回复
                        太长不
                        。。。。


                        IP属地:浙江来自Android客户端19楼2016-10-22 14:43
                        回复


                          来自Android客户端20楼2016-10-22 14:44
                          回复