自主CPU发展道路及在航天领域应用
2019-04-03胡伟武
胡伟武
(1. 龙芯中科技术有限公司,北京 100095; 2. 中国科学院计算技术研究所,北京 100190)
0 引言
通用中央处理器(CPU)芯片是信息产业的基础部件,也是武器装备的核心器件。我国缺少具有自主知识产权的CPU技术和产业,不仅造成信息产业受制于人,而且国家安全也难以得到全面保障。“十五”期间,国家“863计划”开始支持自主研发CPU。“十一五”期间,“核心电子器件、高端通用芯片及基础软件产品”(“核高基”)重大专项将“863计划”中的CPU成果引入产业。从“十二五”开始,我国在多个领域进行自主研发CPU的应用和试点,在一定范围内形成了自主技术和产业体系,可满足武器装备、信息化等领域的应用需求。但国外CPU垄断已久,我国自主研发CPU产品和市场的成熟还需要一定时间。
目前,我国CPU的发展主要有自主研发和引进技术两条路线。后一路线的支持者认为,引进技术的CPU性能强于自主研发CPU,且引进技术的CPU软件生态更优。很多自主研发路线的支持者也对坚持自主研发龙芯CPU的选择产生怀疑。
在我国航天应用领域,高性能抗辐照处理器长期受国外禁运影响。要从根本上解决问题,摆脱对国外进口元器件的依赖,必须要有能力自主正向设计高性能抗辐照处理器。
1 CPU概述
现代计算机大多采用冯·诺依曼结构,由存储器、运算器、控制器、输入设备、输出设备组成。控制器先从输入设备接收程序和数据,并将其存放在存储器中;然后从存储器取出程序和数据,将其送至运算器进行运算,并将运算结果保存到存储器中;最后将结果数据通过输出设备输出。其中,运算器和控制器被合称为CPU。CPU从存储器中调取、执行指令并将执行结果写回存储器的过程被称为一个指令周期。计算机不断重复指令周期,直到完成程序的执行。计算机系统结构研究的一个主题就是不断缩短上述指令的执行周期,从而提高计算机运行程序的效率[1-2]。相关研究者提出了许多提高指令执行效率的技术,包括精简指令系统计算机(RISC)技术[3]、指令流水线技术、高速缓存技术、转移预测技术、乱序执行技术[4]、超标量(多发射)技术[5]等。
图1 CPU的不同体现方式Fig.1 Different implementation types of CPUs
CPU有多种体现方式,如图1所示。在IBM时代,CPU体现为若干个柜子。1967年交付使用的109丙机如图1(a)所示,运算速度为50 000次/s。由于该机在“两弹一星”的研制中起到了重要作用,因此又被称为功勋机。在Intel时代,CPU体现为一个芯片。2017年发布的龙芯3A3000处理器如图1(b)所示。该处理器集成4个CPU核心,每个核心都有独立的运算器和控制器,峰值浮点运算速度为24亿次/s。在ARM时代,CPU体现为一个IP核,其中,软IP为源代码,硬IP为版图,授权给相关企业用于芯片设计,我国绝大多数手机芯片均采用ARM的CPU核设计。通过集成CPU、内存控制器、IO接口、互连等模块设计的芯片被称为系统级芯片(SoC)。
CPU的价值在于承载生态。虽然全球80%左右的计算机由中国生产,但2011年,我国IT产业百强企业的利润总和仅为美国苹果公司的40%。2016年,苹果公司和三星公司的手机利润占全球市场利润的94%。2017年,苹果、联想、英特尔、海思和展锐公司的销售收入及利润对比见表1。其中,海思、展锐公司的利润不可查。IT产业本质上是为客户提供解决方案,而解决方案决定最终的用户习惯,用户习惯则会形成很高的商业“门槛”。根据谷歌公司最近公布的资料,虽然谷歌公司的Android系统免费,但该系统给谷歌公司带来的盈利超过420亿美元,其根本原因在于谷歌公司控制了手机的解决方案。我国IT产业的出路在于自主研发CPU和操作系统,建立独立于Wintel体系(Intel X86 CPU+微软Windows操作系统)和AA体系(ARM CPU+Android操作系统)的自主技术和产业体系,而不是在已有的Wintel和AA体系中做产品。发展自主CPU的最终目标就是要建立自主可控的信息技术平台和产业体系。
从上述分析可看出,CPU的“体”是运算器加控制器,只有自主研发运算器和控制器才是自主CPU。引进国外的CPU核做芯片只能被称为自主SoC,直接引进国外设计的自主流片更不能被称为自主CPU。CPU的“相”可体现为机柜、芯片或IP。CPU的“用”是承载软件生态,研制自主CPU的目标是“构建安全可控的信息技术体系”,而不是在已有体系中开发产品。有一种观点认为,X86和ARM产业生态好,因此发展自主CPU只能走与X86和ARM兼容的道路。但引进X86和ARM的CPU技术并不是对现有技术体系的创新,这样做很难动摇国外企业对技术平台的把控,长此以往会造成国内企业依赖现有国外IT生态的惰性,加剧国外企业已形成的垄断。
2 建立自主可控的信息技术平台
要建立自主体系,应打造计算机系统的技术链,消除链上的技术难点。通用计算机系统的结构层次如图2所示。由图可见:计算机系统分为应用程序、操作系统、硬件系统、晶体管4个层次[6]。
图2 计算机系统的分层模型Fig.2 Hierarchical model of computer system
第一层是应用程序。我国的应用软件(APP)较为发达,如社交、电商类APP已能与美国比肩。
第二层是操作系统。操作系统负责为编写APP提供应用程序编程接口(API)。常见的API包括C语言、Java语言、JavaScript语言、OpenGL图形编程接口等。我国基于上述API编程的工程师有很多,但能设计这些API软件(如Java虚拟机、C编译器等)的工程师则很少。
第三层是以CPU为核心的硬件系统。CPU提供指令系统(ISA)作为软硬件界面。常见的ISA包括X86,ARM,MIPS等。我国每年使用ARM的CPU核研制的芯片销售额数以亿计,但其主要IP核都是市场上的大众化产品,同质化竞争严重。
第四层是晶体管。我国一直高度重视生产工艺的建设,虽然与国际水平还有一定差距,且主要生产设备依赖进口,但我国的生产工艺水平总体上可满足自主信息化需求。目前40 nm低功耗工艺已经成熟稳定,28 nm工艺亦趋于成熟。介于硬件系统与晶体管之间的工艺模型是芯片生产厂家提供给芯片设计者的界面,包括仿真电路模拟器(SPICE)模型、标准单元库、有关宏单元等。
建立自主软硬件体系要走“应用牵引、系统优化、软硬结合、规范适用”的技术道路。从系统的角度进行优化设计,做到在局部性能不如国外系统的情况下,整个系统的性能超过国外系统。例如:在某数据库应用中,使用X86服务器需50 min,使用基于龙芯CPU的服务器,经过软硬件磨合只需80 s;某雷达显控应用在海量目标场景下,X86高端商业计算机的图像处理速度为10帧/s,经过深度优化,龙芯平台可将处理速度提升至20帧/s。现在的信息系统冗余较多,只要根据适用的原则进行系统优化,就可以做出集约型的优化系统。苹果公司产品iPAD的CPU性能不如Intel的桌面CPU,但因苹果公司坚持建立自主的软硬件体系,故iPAD的用户体验比桌面电脑要好。俄罗斯的CPU技术远不如我国,但因其坚持自主体系,故其武器装备水平性能也相对优越。
3 龙芯CPU性能优化
“十二五”以来,自主CPU在应用试点过程中暴露出性能不足的问题。部分研究人员认为自主CPU满足不了应用需求,倾向于引进国外CPU,或使用引进的CPU核设计芯片。自主CPU是新事物,要用长远的眼光看待其发展,碰到问题和困难不应立刻下结论,而是要找真正的原因。只有“定位准确、机理清楚”,采取的措施才能有效。
CPU的性能优化要紧密结合市场需求,将国外CPU发展趋势和我国自主信息化的具体需求相结合。我国自主CPU的研发源自“十五”期间“863计划”的支持,自主进行技术攻关的CPU包括中国科学院计算机研究所的龙芯CPU、上海高性能CPU研发中心的申威CPU、国防科技大学的飞腾CPU等。在与产业结合过程中,由于科研与产业相背离的问题没有得到解决,因此虽然个别技术指标达到世界领先水平[7-8],但桌面、服务器等的通用处理能力很低,系统中还存在明显短板。
经过深入分析发现,虽然“十二五”初期主要产品1 GHz龙芯3A1000[9-10]的主频只有市场主流产品的1/3,但其性能的主要瓶颈仍是微结构差距导致流水线效率低,尤其是访存带宽与市场主流产品有较大差距,供数和供指令不足引起了指令流水线频繁阻塞。通过优化微结构设计,大幅提高了访存性能和转移猜测准确度,并通过增加有关队列解决指令流水线堵塞问题,使用境内40 nm工艺研制出龙芯3A2000[11]。虽然龙芯3A2000的主频仍是1 GHz,但其通用处理性能为3A1000的2~3倍,访存带宽有较大提高。在此基础上,使用境外28 nm工艺研制出的龙芯3A3000的主频提高到1.5 GHz,通用处理性能达到3A1000的4~5倍。
龙芯3A1000,3A2000,3A3000的性能比较见表2。表中,INT2006和FP2006分别是国际公认的CPU性能测试程序SPEC CPU2006的定点和浮点测试集[12],STREAM是国际公认的访存带宽测试集。表2还给出了1.5 GHz的AMD K10处理器的测试结果。由表可见:1.5 GHz的龙芯3A3000的综合性能与1.5 GHz的AMD K10相当(测试时将AMD K10的主频降低到1.5 GHz,主要是为了比较3A3000和K10的流水线效率)。
表2 龙芯3A1000,3A2000,3A3000性能比较
在研龙芯3A4000与3A3000在FPGA仿真平台上的性能比较见表3。由于仿真平台主频较低,约为1 MHz,因此使用SPEC CPU2000 test程序进行测试。测试时模拟3A4000和3A3000的主频均为1 GHz,内存控制器频率均为500 MHz。由表可见:在相同主频下,龙芯3A4000比3A3000的定点性能高48.54%,浮点性能高43.77%。上述对比未考虑龙芯3A4000支持256位向量优化。根据在X86平台上的性能测试,编译器自动向量化可将SPEC CPU的定点性能提高约5%,浮点性能提高约15%。龙芯3A4000使用3A3000的28 nm工艺,通过优化设计将主频从1.5 GHz提高到2.0 GHz。在相同的工艺条件下,龙芯3A4000性能为3A3000的2倍。在此基础上,若使用更先进的工艺技术将主频提高到2.5~3.0 GHz,则龙芯CPU的通用处理性能可达到国际主流CPU的水平。
表3 龙芯3A3000和3A4000仿真平台性能比较
上述结果表明:自主CPU的性能可在持续改进过程中不断提高,满足自主信息化需求,并不需要依靠引进。CPU系统较为复杂,应在产业化实践中通过不断试错、长期演进来逐步发展。对于以自主CPU和操作系统为代表的核心技术,只有在自主创新实践中发现问题,在解决问题的过程中提高能力,才能保障国家信息安全,支撑产业持续发展。
4 龙芯软件生态建设
我国应构建面向工控系统和信息系统的两大软件生态。一是面向“中国制造2025”的工业互联网生态体系。目前,不同的工控系统相互孤立且愈加复杂,如Android平台改变服务模式,实现了“软件即服务”。我国需要一个“软件即制造”的平台来提升信息化水平,在该平台上实现使用APP即可进入相关领域的控制系统,如飞机、高铁等。二是面向自主信息化的桌面和服务器生态体系。如果说建设工业互联网生态是“开拓疆域”的话,那么建设信息系统生态就是“收复失地”。在桌面和服务器领域,必须建设信息系统生态。我国至少要发展面向国防、能源、交通、金融、电信等涉及国家安全和国民经济安全的自主基础软硬件平台。
生态的关键是开发者。对于系统开发者,技术平台要保持系统结构的长期稳定,要以保持操作系统二进制兼容为重点;对于应用开发者,技术平台要便于应用开发,要以完善应用程序编程接口为重点。
1) 通过统一系统架构,保持操作系统跨硬件平台的二进制兼容,可大幅提高系统开发效率。Wintel的所有平台都能安装Windows操作系统;而以前龙芯的平台,每升级一次CPU,就必须适配一次操作系统,甚至不同厂家的主板也得适配操作系统。通过指令系统兼容可实现应用程序的二进制兼容,但要实现操作系统的二进制兼容则需要从包括CPU、桥片、BIOS、操作系统等在内的全系统的角度进行规范并保持长期兼容。除了主导X86指令系统的发展,英特尔公司还主导了主板和操作系统界面的统一可扩展固件接口(UEFI)规范,以及IO设备与操作系统界面的外设部件互连标准(PCI)规范等。“Outside”是英特尔公司设立的技术门槛,是其保持垄断的重要手段。
统一系统架构对CPU、桥片、BIOS和操作系统的研发都提出了要求,包括跨代兼容的指令系统、标准化的全局地址空间分布、标准化的中断路由和中断编程、标准化的多核间同步通信编程接口、可动态枚举的扩展组件、可动态插拔的外设接口等。除了CPU,桥片是确定系统架构的核心要素。计算机系统通过桥片定义系统空间布局,确定中断系统,实现系统组件标准化(HPET,RTC)、外设接口动态插拔、扩展组件动态枚举等。为此,龙芯中科技术有限公司(简称龙芯中科)自主研发了龙芯7A1000桥片,并与龙芯3号系列CPU形成统一系统架构规范,保持操作系统对不同主板及升级后的CPU和桥片的兼容,大幅减少了软硬件适配工作量,提高了软硬件开发效率。
2) 优化API,促进应用迁移,提升用户体验。API是应用开发者的生产工具,大多数APP是基于API接口(Java,JavaScript,QT等)开发出来的。只有掌握API,才能吸引大量开发者围绕龙芯中科的技术平台进行应用开发工作,并在此基础上逐步形成产业生态。API是生态建设的必争之地。
用于“人机交互”的图形API和用于“机机交互”的网络API是IT产业的两大核心要素。谷歌的Android操作系统的内核和很多模块都直接来源于Linux,但对图形和网络子系统进行了深入改造。在图形系统方面,Linux中包括Xserver,GTK,QT,OpenGL在内的图形系统在发展过程中由于缺少规划,冗余高且效率低。谷歌在OpenGL的基础上推出了功能完整、简洁高效的OpenGL-ES图形系统API。在网络系统方面,Linux的火狐浏览器(Firefox)臃肿且复杂,谷歌的Chrome浏览器简洁且高效,现已超过微软的IE浏览器成为世界上用户最多的浏览器。
“十二五”期间,在信息系统生态方面,龙芯中科结合政务处理系统、指挥系统等应用需求,基于Linux研制了Loongnix通用操作系统平台。Loongnix以“规范适用”为原则,与龙芯CPU进行了深度适配,尤其是优化了包括编译器、Java虚拟机[13-14]、浏览器、媒体播放[15]、OpenGL和QT图形库[16]、Flash等在内的重点软件包。龙芯平台Java虚拟机和JavaScript优化前后比较见表4。龙芯中科将在“十三五”期间对Xserver图形系统进行重新梳理与深度优化,使龙芯平台的用户体验得到大幅度提升。Loongnix为开放平台,操作系统企业、整机企业和集成商均可基于Loongnix开发发行版操作系统。同时,龙芯中科将国际开源社区作为生态建设的重要阵地,积极向国际开源社区提供软件包,以避免每次社区版本升级都要重新适配。
表4 龙芯平台Java虚拟机和JavaScript优化前后比较
“十二五”期间,在工业互联网生态方面,龙芯中科结合用户需求研制了面向工业互联网应用的实时操作系统LoongOS。该操作系统在RT-Linux和VxWorks内核的基础上,完善了OpenGL,QT等图形界面,在装甲装备、舰船、飞机显控系统等领域得到了初步应用。基于VxWorks的龙芯2D,3D图形API所绘制的图形如图3所示。龙芯中科下一步将完善LoongOS的网络API,以方便网络编程。
图3 基于VxWorks的龙芯2D,3D图形API所绘画的图形Fig.3 Graphics drawn by Loongson 2D and 3D graphical APIs based on VxWorks real-time operating system
在Wintel体系中,Intel主导指令系统、主板与操作系统接口UEFI、操作系统与外设接口PCI等软硬件接口规范,微软主导操作系统与应用的API接口规范。在AA体系中,ARM主导指令系统及片内总线接口AMBA(advanced microcontroller bus architecture)规范,谷歌主导操作系统与应用的API接口规范。苹果公司虽然使用ARM指令系统,但其软硬件自成体系,能进行系统优化,所以用户体验较Wintel和AA要好。上述3个生态体系中有以下几个重要特点:
1) 开放。越开放合作伙伴越多,产业生态力量越大,ARM公司在这方面做得最好。
2) 兼容。越兼容越容易形成合力,产业生态不易碎片化,英特尔公司在这方面做得最好。
3) 优化。以用户体验为中心,通过软硬件紧密结合进行优化,苹果公司在这方面做得最好。
龙芯CPU+开放操作系统的模式能做到比Wintel更开放,比AA更容易统一系统架构,并实现操作系统二进制兼容,比Wintel和AA更容易通过软硬件磨合并实现系统优化。
5 自主CPU在航天领域的应用现状与前景
伴随我国航天事业的发展,航天型号任务中火箭、飞船和卫星的平台与载荷大规模采用的CPU主要用于信号处理、信号和设备控制、数据计算和传输,以及综合多任务调度。航天装备的元器件、器部件和载荷必须采用宇航级器件以提升空间环境抗辐照的能力,这对国产化自主可控CPU提出了更高的要求[17-19]。现阶段,自主CPU在我国航天领域的应用情况主要为:1)通过反向设计,仿造国外同类型的抗辐照处理器,实现国产化的目标;2)采用未被禁运的商业级、工业级的高性能处理器产品,并对其进行筛选和航天工程化处理,满足型号任务对高性能处理器的需求[20-21]。
龙芯中科从2006年开始研制抗辐照CPU技术,经过10余年的积累,掌握了宇航级抗辐照处理器的技术重点和难点,推出系列抗辐照CPU产品。目前,龙芯抗辐照CPU主要发展两个系列:一是基于0.18 μm体硅进行抗辐照加固设计的低端系列;二是基于0.13 μm 硅技术(SOI)工艺进行加固设计的高端系列。龙芯抗辐照/抗核CPU发展路线见表5。
表5 龙芯抗辐照/抗核CPU发展路线
低端系列包括龙芯1E04(主处理器)和1F04(协处理器)两款产品。其中龙芯1E04集成了双发射GS232处理器核,是一款通用的抗辐照CPU,主频为66 MHz;龙芯1F04主要特点是集成了比较丰富的航天专用接口,可用一片1F处理器替代若干现场可编程门阵列(FPGA)所实现的功能。龙芯1F04还集成了GS132处理器核,主频为33 MHz。在对性能要求较低的场合,龙芯1F可以单独作为SoC使用;在对性能要求较高的场合,龙芯1E04和龙芯1F04可以通过PCI总线配合使用。目前龙芯1E04和龙芯1F04已经研制成功,并于2014年完成鉴定检验。初步测试结果表明:实测抗辐照能力远大于项目立项时的目标值。如总剂量目标值为100 krad(Si),实测值大于500 krad(Si);单粒子锁定目标值大于75 MeV·cm2·mg-1,实测值大于99.8 MeV·cm2·mg-1;IGSO轨道翻转率目标值小于10-10次·位-1·d-1,实测值小于10-13次·位-1·d-1。
高端系列使用0.13 μm SOI工艺将龙芯1E04和1F04升级为龙芯1E300和1F300。在功能上,龙芯1E300较1E04增加了一个Spacewire接口,其余不变。在性能上,龙芯1E300集成了64位双发射GS264处理器核,支持128位向量,主频提高到200 MHz以上,运算能力达到400 亿次/s,性能相比1E04提高了3~5倍。龙芯1F300的处理器核主频也相应提高,同时集成SpaceWire高速总线接口。在提升抗辐照能力上,使用SOI工艺要优于使用体硅加固技术。龙芯1E300已于2018年推出,龙芯1F300预计于2019年推出。
龙芯中科还研制了抗辐照MCU龙芯1 J,该芯片采用130 nm Flash工艺,具有低功耗、高可靠、高集成度的优点,已于2018年推出。
依托北斗卫星专项,龙芯抗辐照CPU已在北斗装备星上得到应用[22-24]。2015年3月31日,我国首颗IGSO新一代北斗导航卫星搭载龙芯1E04和1F04发射升空。2016年2月1日发射的新一代北斗导航中地球轨道(MEO)卫星,采用改版龙芯1E04和1F04芯片,工作状态良好。2018年,北斗三号6颗组网装备卫星上采用龙芯抗辐照1E04和1F04的终端处理器及平台控制载荷,工作状态良好。目前龙芯1E300已成功在北斗三号卫星上搭载试验,解决了我国航天工程中高性能抗辐照处理器受制于国外禁运的问题,实现了我国航天器国产化处理器在性能方面的跨越式发展。
龙芯抗辐照CPU片内所有IP(包括处理器核)均从源代码开始自主设计,流片封装均采用境内工艺,BIOS和操作系统的源代码均是自主掌握。龙芯抗辐照CPU采用的龙芯系列处理器核通过了地面军用、民用芯片的批量(100万片以上)应用检验,结构和逻辑成熟度高;其他逻辑模块及接口在不同龙芯处理器上也得到了充分地面应用验证。龙芯CPU的抗辐照技术包括使用环栅进行抗总剂量加固及抗闩锁加固;使用三模冗余的互锁触发器,提升触发器抗单粒子辐照能力;使用互锁存储结构及错误检查纠正(ECC),提升存储器抗单粒子辐照能力;设计采用时空三模冗余,增强组合逻辑对单粒子辐射的承受能力。北斗装备星在空间环境恶劣,距地面20 000 km的轨道上运行了3年,未出现一次可确认的单粒子翻转事件。
基于龙芯抗辐照CPU可形成稳定的系列化系统解决方案。龙芯1F04及1F300分别形成高低搭配的独立SoC解决方案。龙芯1E04+1F04及1E300+1F300分别形成高低搭配的CPU+桥片解决方案;龙芯1 J则形成微控制单元(MCU)解决方案。其中:在卫星平台综合电子系统(星上数据处理系统)中,可采用龙芯1E(主处理器)+1F(协处理器)(桥片)的方案替代原先的AT695/AT697+ FPGA扩展外部接口的方案。例如:北斗三号型号任务中,中国航天电子技术研究院研制的星务计算机系统首次采用龙芯1E300+1F设计方案替代原有的AT697方案。在卫星平台姿态控制载荷中,可采用龙芯1E+FPGA方案替代原有FPGA,AT697+FPGA和部分DSP+FPGA的方案。例如:北京航天时代光电科技有限公司的光纤陀螺、中国科学院成都光电技术研究所的太阳敏感器、中国科学院上海技术物理研究所的地球敏感器等均采用龙芯处理器替代方案。在航天工程应用上也可以考虑选用独立龙芯1F处理器替代原有进口的单片机(80C31,80C32等)、FPGA(30万门以下)和性能要求较低的数字信号处理器(DSP)。
现阶段,龙芯中科已掌握MIPS(microprocessor without interlocked pipod stages)指令集和处理器微结构设计,以及抗辐照加固技术、工艺及设计规范,设计研制了以LS1E和LS1F为代表的抗辐照处理器,其性能达到国外抗辐照处理器的指标。在航天型号任务中,采用MIPS架构的抗辐照处理器技术路线作为SPARC(scalable processor ARChitecture)架构技术路线的有力补充,能有效提升国产航天器综合电子系统的安全性和可靠性。在卫星平台和载荷中,也可采用龙芯抗辐照处理器的替代方案,将其作为主份或备份载荷,从而形成我国特有的国产化安全自主可控抗辐照处理器的体系。
6 结束语
发展自主CPU应坚持走“以市场带技术”的自主研发道路,而不应走“以市场换技术”的引进技术道路。发展自主CPU,构建自主可控的信息技术体系,在航天领域研制高性能自主可控抗辐照处理器,是我国航天装备发展的需要。龙芯CPU研发和应用实践表明:坚持自主研发,坚持建设自主生态的CPU是很有必要的。