欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

龙芯曲折的自主CPU之路

程序员文章站 2022-03-30 23:09:32
通用cpu被称作是集成电路中的“珠穆朗玛峰”,对集成电路和软件产业具有基础性和带动性作用。但cpu的微架构需要长期积累,且需要对应用、操作系统、...

通用cpu被称作是集成电路中的“珠穆朗玛峰”,对集成电路和软件产业具有基础性和带动性作用。但cpu的微架构需要长期积累,且需要对应用、操作系统、编译、逻辑和电路的行为都融会贯通。我国由于缺少自主的cpu技术和产业,在信息产业严重受制于人。在自主cpu的研发道路上,国内以龙芯为代表的企业手握自主创新的“枪杆子”走过了坎坷的十八年。

行走在路上的龙芯

回顾龙芯十八年多的发展历史,走的是“之”字形的发展道路,弯路比直路多。 

2000年10月,一个偶然的机缘,胡伟武开始参与中科院计算所的cpu开发项目。

2001年8月,中国自主研发的龙芯1号fpga成功地运行了linux操作系统。

2002年8月10日,“龙芯1号”问世,中国人结束了只能用国外cpu造计算机的历史,被业内人士誉为民族科技产业化道路上的一个里程碑。

2003年4月18日,由中科院计算技术研究所自主研发的国产首款64位高性能通用cpu——“龙芯2号”问世。龙芯2号在性能上有着大幅提高,对我国行成具有自主知识产权的计算机产业有着重要的推动作用。

此后研制龙芯3号系列cpu发展道路之曲折、奋斗之艰辛,付出之巨大无人知晓,直到2016年,龙芯3a3000才研制成功,因2016年是红军长征胜利80周年,因此以cz80命名,每颗芯片的硅片上都刻有cz80字样。

十年来,龙芯先后研制了龙芯3a1000、3b1000、3b1500、3a2000/3b200、3a3000/3b3000五款龙芯3号系列芯片。为什么龙芯cpu研制经历这么多坎坷呢?除了龙芯的质量流程需要持续改进以外,究其根本原因,是因为龙芯始终坚持芯片中的核心模块自己研制,龙芯长期坚持芯片中的核心ip自己掌握。

胡伟武在《龙芯的足迹》一书中写到:“做任何事情,依靠别人总是容易一些,完全靠自己则困难的多。但依靠的多了,吃过亏后才明白还得靠自己”。

比肩amd,龙芯新一代cpu实现自主可控

那么自主cpu与国外先进水平主要差距在哪?在胡伟武看来,自主cpu在技术上的核心问题是由于没有很好地掌握处理器的微架构技术,自主处理器单核性能较低,而不是处理器核不够多,在cpu芯片中多放些处理器核是容易的,难的是要把处理器核做好。再就是通用处理能力和设计能力不行。

龙芯的设计原则是练好内功,通过设计优化来提高单核通用处理性能。在昨天的龙芯新产品发布暨用户大会上,龙芯发布了新一代通用cpu产品3a4000/3b000。3a4000/3b000基本完成了单核通用处理性能“补课”。

龙芯曲折的自主CPU之路

龙芯曲折的自主CPU之路

龙芯3a4000/3b4000在片内集成了安全机制,实现自主可控和安全可靠的统一。3a4000/3b4000主要有三大特点:

特点一:相同工艺性能(28nm)成倍提高 

龙芯3a4000/3b4000使用与上一代产品3a3000/3b3000相同的28nm工艺,通过设计优化成倍提升性能。具体可表现为spec cpu2006单核peak分值双21分,base分值双18分;3b4000支持四路直连,四路服务器性能是3b3000双路服务器的四倍;科学计算性能是3a3000的四倍以上,支持128/256位向量;据胡伟武介绍,3a4000通用处理性能与amd公司28nm工艺最后产品“挖掘机”处理器相当,且单核性能高于用14nm实现的arm处理器。

特点二:片内安全机制 

龙芯3a4000/3b4000能够从机制上有效防范meltdon和spectre等漏洞,支持md5、aes、sha等加解密算法,支持专用安全可信模块及国密算法,支持“影子栈”等访问控制机制。据龙芯中科董事长胡伟武介绍,传统的cpu安全机制只是在处理器核外增加安全可信模块,龙芯3a40003b4000专门在处理器核内设计了安全控制机制,从而达到本质安全。

特点三:一如既往地自主研发 

龙芯3a4000/b4000一如既往地强调自主研发。芯片中的所有功能模块,包括cpu核心、片内互联总线、ddr4内存控制器及各种接口模块等的所有源代码均自主设计。芯片中各类全定制模块,包括多端口寄存器堆、锁相环、ddr4phy、pll等均自主研发。除了流片厂家提供的基本设计环境,龙芯3a4000/3b4000没有使用任何第三方ip。

3a4000/3b4000使用龙芯公司最新研制的新一代处理器核gs464v,主频1.8ghz-2.ghz,通过优化功耗管理,基于龙芯3a4000笔记本工作时间比上一代产品延长一倍以上。采用37.5mm*37.5mm封装工艺,还支持bga、lga以及cbga的多种封装形式,同时其桌面主板可支持四层布线。

胡伟武还指出,3a4000/3b4000还存在一些问题,例如ddr4内存频率不够高,功耗偏大,但这也是龙芯进一步改进的动力。下一步龙芯的主要工作重点就是提高主频和核数。龙芯将于明后年推出使用12nm工艺的四核3a5000和16核3c5000,其主频将提高到2.5gh以上,通用处理性能将达到当时amd的水平,3a5000通过工艺改进提高主频,3c5000工艺改进增加核数。通过20年积累完成cpu性能“补课”。

龙芯操作系统的“三条线、两个面”

龙芯的“初心”是打造独立于wintel和aa (arm+android)的第三大生态体系。优秀的生态有三个重要特点:一是开放,越开放合作伙伴越多,产业生态力量越大,google和arm做得最好;二是兼容,越兼容越容易形成合力,产业生态不易碎片化,intel和微软做得最好;三是优化,以用户体验为中心,通过软硬件紧密结合进行优化,苹果做得最好。

他山之石,可以攻玉。经过多年探索,龙芯形成了“intel+ google+ apple”的商业与技术模式。一是学 intel商业上形成cpu、os、odm核心并向外辐射,技术上做好 outside规范,保持结构的兼容和稳定,实现操作系统级二进制兼容。二是学 google“做os但不卖os”,谷歌研制 android但不卖 android操作系统,而小米的米os和华为的麒麟os均基于 google的 android;龙芯研制 loongnix形成龙芯cpu的基础版操作系统并免费开放给合作伙伴,支持合作伙伴推出发行版操作系统产品。三是学 apple以用户体验为中心从全系统角度进行优化,把细节做精。

结合龙芯生态建设的要求,龙芯在实践中形成了软件生态“三条线、两个面”的总体思路。

龙芯操作系统的“三条线”: loongnix面向通用信息化系统,基于通用linux平台进行完善和优化,为统一操作系统龙芯版提供支持;loongos面向高可靠实时终端,基于linux/rt-linux构建简洁高效的os,没有xserver的图形系统;loongworks面向实时嵌入式应用,针对历史应用,基于vxworks内核,完善图形、网络等api,把vxworks从“dos”阶段升级到windows阶段;龙芯操作系统的“两个面”指的是在“三条线”的基础上,通过统一系统架构实现操作系统跨硬件的二进制兼容,完善api实现应用的二进制兼容及优化。 

一是面向硬件,对不同主板实现二进制兼容,arm系统做不到os的二进制兼容,其设计os、bios、桥片等多方面规范,arm只能管住cpu核及amba总线,intel能管住uefi、pci软件协议等;

二是面向应用,对不同应用实现二进制兼容,api是os的指令系统,也是建立生态的必争之地,我国用js和java编程的工程师数以百万计,但会写js和java虚拟机的不到百人,再加上开源软件的不兼容性,使得浏览器升级就会导致应用的不兼容。龙芯通过基础版操作系统管住这“两个面”。

本次发布会龙芯中科发布了统一系统架构的标准规范体系,并通过与oem/odm厂商签署认证协议建立产品认证体系。从龙芯3a4000/3b4000起,龙芯的参考设计全面支持统一系统架构,cpu和主板升级均不影响操作系统及应用的兼容性。

通过统一系统架构保持操作系统跨硬件平台的进制兼容可以大幅提高系统开发的效率。在 wintel的平台上,不管是谁做的主板,一套 windows操作系统都能装。

不管是多新的cpu,十年前的 windows xp还能装。通过指令系统兼容可以实现应用程序的二进制兼容,但要实现操作系统的二进制兼容则需要从包括cpu、桥片、bios、操作系统等全系统的角度进行规范并保持长期兼容。

在统一系统架构的总要求下,实现了主板、固件、内核层面的兼容,并支持acpi的uefi固件,把硬件细节抽象为os对地址空间的访问,通过acpi表向os提供启动配置/运行时配置和以os为主导的电源管理。除此之外,还有检测工具集合认证协议。

龙芯中科副总裁张戈在题为《龙芯生态及解决方案分享》的演讲中表示,随着相关市场需求的不断拉动,龙芯的合作伙伴已经增至近千家,下游基于龙芯的开发人员达到数万人,2019年龙芯芯片出货量已经达到50万颗以上,在国产化应用中市场份额遥遥领先。

国产cpu要不怕远征难

世界上做cpu的企业中,凡是不做生态或者跟生态的cpu企业都活不好。

intel是一个做生态的企业,佛教《百喻经》中有一个“三重楼喻”,在信息产业技术也有“三重楼喻”,第一层是cpu技术+操作系统技术,即通用cpu;第二层是网络技术+图形/媒体技术,即gpu,intel的通用打败思科的专用,片内集成gpu摆脱对英伟达的依赖;第三层是ai技术+虚拟化技术,如npu。在芯片内部结构复杂度上,如果cpu的微结构复杂度是1,gpu的复杂度为0.3-0.5,神经网络处理器npu的复杂度则小于0.1。

胡伟武指出,龙芯的三层楼要一层层盖。经过20年的发展,到2020年自主cpu和os基本完成“补课”,cpu通用处理性能已达到amd水平,os成熟度也已接近windows xp。但应用不够丰富和产业不配套成为自主cpu和os发展的下一个瓶颈,过去我国的信息化应用主要构建在国外wintel和aa等平台上,在cpu、gpu、网络等的产业链配套不足。

因此未来cpu与应用软硬件企业应该相向而行,龙芯将不断完善基础软件环境(如net等)和配套芯片(如gu、电源时钟芯片),信息化应用软件企业应把 windows上的应用软件往linux平台上迁移。

胡伟武还提到,国产cpu应“不怕远征难”,纵观历史,高复杂系统能力建设需要以30年为周期,例如“运十”1996年拆解,“c919”2017年首飞。那么有没有办法避免上述耗时的多轮试错,一步就上楼?对此,龙芯进行了各种尝试:造不如买,市场换技术、研不如买、弯道超车。。。。事实证明,这些都不是根本的解决办法。正所谓不同产品需要不同周期,cpu就是个孩子,千万不能指望2~3年把他养好。

在核心技术产业“爬楼梯”的过程中,必须要有愚公移山的精神和实事求是的作风,不要幻想弯道超车,建立自主it产业体系需要30年的努力,目前龙芯已发展19年,正呈现加速发展态势。

龙芯曲折的自主CPU之路

芯中科技术有限公司总裁胡伟武

胡伟武介绍到,改革开放以来,我国发展核心技术形成了以“市场换技术”和“市场带技术”为主要特点的两条道路。所谓市场换技术,就是通过合资等方式把中国市场给予国外企业,希望在合资过程中得到先进技术;我国汽车产业是“市场换技术”道路的典型代表,事实证明,走这条道路在发展核心技术方面没有取得预期的效果。

*主要cpu企业均通过合资或授权方式成为“自主cpu”,要强调自主cpu需“融入”已有生态。所谓“市场带技术”,就是充分发挥我国*优势和市场优势,通过*内市场引导,形成技术能力,带动技术进步,再参与*外市场竞争;我国航天产业是“市场带技术”道路的典型代表。

事实证明,走“市场带技术”道路更有利于我国发展和掌握核心技术。龙芯走的正是市场带技术的道路,龙芯cpu通过自主编写cpu源代码,并在应用中不断演进,强调自主cpu要建立自主生态(独立于 intel体系和aa体系)。要同台竞技需先通过楼梯“上台”,一步楼梯就是一次在市场应用中试错,不断的试错,才能促使性能的提高和生态的完善。

龙芯os在试错中不断趋于成熟:第一功能丰富,在主要的功能软件和大量的io驱动上功能更加丰富;第二架构稳定,实现了操作系统对不同主板及升级后的cpu二进制兼容,涉及cpu、桥片、bios、os的大量细节更加规范化;第三性能优化,性能成倍提高,从被动优化逐渐到主动优化,另外打造技术链,在每个局部都不如国外的情况相爱啊,整体性能优于国外系统;第四问题收敛,应用现场问题追溯到cpu和os的越来越少,成熟度更接近windows xp的水平。

胡伟武指出,走“市场带技术”的道路,通过自主研发掌握cpu的核心技术,建立自主可控的信息技术体系,我们失去的只有锁链,得到的将是整个世界。走“市场换技术”的道路,通过引进技术发展自主cpu产品,只是将一副锁链换成另外一副锁链。结合过去龙芯十八年的发展之路,任何企业和新技术在发展的过程中,既要埋头拉车,又要抬头看路。

龙芯曲折的自主CPU之路