微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 一文看懂龙芯3号开发全过程,这15年都经历了啥?

一文看懂龙芯3号开发全过程,这15年都经历了啥?

时间:09-24 来源:EETOP 点击:

单核通用处理器性能提高3倍以上。当时龙芯公司承担了基于某境内40nm LL工艺的高可靠嵌入式CPU研制项目,虽然工艺性能不高,甚至比我们原来用的65nm GP工艺还慢30%,但至少流片的钱有地方出了,我们就基于该工艺研制3A2000。当时还有一个重要决定就是保持3A2000与3A1000的引脚兼容,这样龙芯客户中基于3A1000研制的已有上百种板卡解决方案可以直接通过换焊3A2000来提高性能。基于境内工艺、通过微结构优化大幅提升性能以及与3A1000引脚兼容说明3A2000开始摆脱了学院派惯性,走出结合用户需求研发CPU的关键一步。

 

2013年初,在龙芯最困难的时候,中科院计算所孙凝晖所长在所里资金本身就很困难的情况下,拿出500万元支持龙芯3A2000处理器核GS464E的前期研发。虽然与研制3A2000所需要的上亿元经费相比,500万显得很少,但在龙芯最困难的时候得到来自龙芯"娘家"计算所的支持,觉得非常温暖。

  

事实上2012年初龙芯公司在香山饭店召开年度规划会时就决定对GS464处理器核(龙芯2F、2H、3A1000、3B1000、3B1500等都基于GS464微结构)进行优化,形成新一代龙芯微结构GS464E。GS464处理器核一直是我自己维护,其中有一半左右代码(包括流水线控制部分如寄存器重命名、乱序发射队列、寄存器堆控制、重排序缓存,以及访存部分如地址运算、一级数据Cache、TLB、访存失效队列、最后一级共享Cache)是我自己写的,2012年上半年我在机房中花了整整两周时间为GS464升级为GS464E打好必要的基础(我当时说要把马的架子变成骆驼的架子,先要把一个访存部件升级为两个访存部件)后,把维护和升级处理器核的任务移交给汪文祥和吴瑞阳。这很可能是我最后一次有机会写龙芯CPU的代码了。现在回忆起来,能够在机房中心无旁骛地写代码真是莫大的幸福,有无比的成就感,但我不能让自己成为龙芯CPU发展的瓶颈。而且经过多年实践的锻炼,龙芯的年轻人已经充分地成长起来了。龙芯3A1000、3B1000和3B1500都是我自己当技术负责人,3A2000开始由年轻人担任芯片的技术负责人,3A2000的技术负责人是王焕东,3A3000的技术负责人是杨梁。承担国家项目也主要由年轻人作为项目负责人。

  

GS464E对GS464的改造是全方位的。在指令系统方面,我们在MIPS64 R3的基础上进行了扩展(MIPS指令系统的授权允许用户进行扩展)并形成龙芯指令系统LoongISA,除增加一些基础指令外,还有支持云计算的虚拟化扩展,以及加速X86和ARM二进制翻译的扩展。在微结构方面,除了前述的把访存功能部件从一个增加到两个外,还把Cache行大小从256位增加到512位,最后一级Cache从四路组相联提高到16路组相联,增加了多个层次的预取,把重排序缓存ROB从64项增加到128项,重命名寄存器个数从64个增加到128个,乱序发射队列由原来的定点和浮点各16项增加到定点16项(3A3000增加到32项)、浮点24项(3A3000增加到32项)、访存32项,重新构建了整个转移猜测模块。此外,用大量的测试程序对微结构进行了细节的磨合,局部优化达到三十多处。3A2000的多核互连模块和内存控制器也进行了性能优化。尤其是内存控制器的优化,可以大幅度提高访存频率和效率。2014年7月,RTL代码冻结。

  

3A2000除了使用流片厂家提供的标准单元库、Memory Compiler生成的RAM、低速IO单元以及efuse单元以外,包括锁相环、HT PHY、DDR2/3 PHY、多端口寄存器堆、CAM、温度传感器等宏单元都是我们自己定制的,没有使用任何第三方的宏单元模块。因此,全定制工作量也不小。

  

3A2000的物理设计采取了很多优化措施,初步建立起一套在主流EDA工具基础上的In-House的流程和工具,包括统一数据库支撑的设计平台,基于触发器聚类的定制时钟设计,深度层次化设计等。这套In-House的流程和工具比纯粹依赖EDA工具的单元级设计流程提升性能20%左右。

  

2014年11月初,3A2000交付流片。这次流片共有龙芯的三款芯片一起拼了个全掩膜。由于流片前的功能验证非常充分,尤其是在3A2000验证过程中,王朋宇负责的验证组完善了龙芯指令级随机验证环境,从原来只覆盖用户态指令到覆盖核心态指令以及例外处理,大大提高了3A2000的功能验证覆盖率。物理设计和检查也精雕细刻,我们对3A2000流片成功很有信心。

  

经过几个月的焦急等待,2015年4月10日晚饭后,终于拿到了3A2000的盲封样片,连夜进行调试,到第二天早上三点多成功运行操作系统。随后的测试一切顺利:在运行了包括SPEC CPU2000、SPEC CPU2006、Unixbench等大型程序后,功能未见异常;主频可以达到1GHz;SPEC CPU2006单核分值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top