龙芯指令系统架构及其软件生态建设
胡伟武 高翔 张戈
(龙芯中科技术股份有限公司,北京100190)
摘要:构建独立于Wintel体系和AA体系的安全可控的信息技术体系是龙芯的发展目标㊂介绍龙芯自主指令系统架构LoongArch;并从构建LoongArch的基础软件体系㊁研发兼容及自主编程框架㊁通过二进制翻译实现与X86等主流架构的应用兼容㊁LoongArch开源社区建设等方面介绍龙芯软件生态建设进展及计划㊂
关键词:龙芯指令系统架构;龙芯基础版操作系统;应用兼容框架;自主编程框架;二进制翻译
中图分类号:F426.6;TP368.1㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀文献标志码:A
引用格式:胡伟武,高翔,张戈.龙芯指令系统架构及其软件生态建设[J].信息通信技术与政策, 2022,48(4):43-48.
DOI:10.12267/j.issn.2096-5931.2022.04.008
0㊀引言
改革开放以来,我国的信息产业主要构建在以
Intel的CPU和微软的Windows操作系统形成的
Wintel体系和以ARM的CPU和谷歌的Android操作系统形成的AA体系基础之上,这不仅使国家安全受到威胁,产业发展也受制于人㊂2011年,我国电子信息产业前100强企业的总利润加起来不及美国苹果公司的一半[1]㊂2012年,全球手机市场总利润中仅苹果公司和三星公司就占97%,该比率在2016年为94%
[2]㊂同样是卖整机,主导手机生态的苹果公司2018年的销售收入为2656亿美元,净利润为595亿美元[3],而没有自主生态的联想公司2018年的销售收入为510亿美元,净利润为6亿美元[4]㊂同样是卖芯片,主导计算机生态的Intel公司2018年的销售收入为708亿美元,净利润为210亿美元[5],没有自主生态的展锐公司销售收入为16亿美元,利润亏损(展锐公司手机芯片销售数量不少于Intel公司的电脑芯片销售数量)㊂可见,我国信息产业的发展关键在于基于自主CPU和操作系统建立独立于Wintel体系和AA体系的自主信息技术体系㊂
要形成国内信息产业大循环,需把握3个主要环节㊂一是基于自主核心IP的芯片研发㊂核心IP对芯片的性能㊁成本㊁功耗㊁安全性具有决定性作用,常见的核心IP有CPU核㊁GPU核㊁内存接口㊁高速IO接口等㊂二是基于自主指令系统的软件生态㊂指令系统是计算机最重要的知识产权,决定了软件的编码
表征与存储格式,承载着软件生态的发展创新,是建立软件独立生态系统的基础㊂如X86指令系统承载桌面计算机和服务器的软件生态,手持移动终端软件生态由ARM 指令系统承载㊂三是基于自主可控材料设备的生产工艺㊂目前,我国境内材料设备工艺已经可以基本满足我国自主信息化建设的要求,但包括光刻胶㊁光刻机在内的材料和设备还有许多方面受制于人,预计经过努力,这些问题将在未来10年逐步得到缓解㊂上述 3个基于 实质上就是我国信息产业要打通的3个堵点㊂
经过2001年以来20多年的努力,通过自主研发
CPU核㊁GPU核㊁内存接口㊁高速IO接口等核心IP,龙芯公司于2021年正式推出的龙芯四核3A5000以及16核3C5000处理器的通用处理性能已经逼近市场主流产品的水平,正在研制的下一代龙芯3A6000/3C6000及3A7000/3C7000系列性能将达到市场主流产品的水平㊂龙芯公司自主生态建设的主要瓶颈从CPU性能不足转向软件生态不够丰富㊂本文从指令系统㊁操作系统㊁二进制翻译㊁开源社区等方面介绍龙芯软件生态的建设进展及计划㊂
1㊀推出自主指令系统架构LoongArch
指令系统是CPU所执行的软件指令的二进制编码格式规范,是计算机的软硬件界面,是CPU和操作系统共同的根技术㊂一种指令系统承载了一个产业生态,如X86指令系统承载桌面计算机和服务器产业, ARM指令系统承载手持移动终端产业㊂就像中国人可以用英文写文章,但不可能基于英文发展中华民
族文化,基于国外指令系统中国的信息产业可以做产品,但构建安全可控的信息技术体系和产业生态则不可能㊂
2021年,龙芯公司基于20年的CPU研制和生态建设积累推出了龙芯指令系统架构LoongArch (Loongson Architecture),包括基础架构部分㊁虚拟化和二进制翻译㊁向量指令等扩展部分,近2000条指令㊂龙芯公司从2020年起新研制的CPU均支持LoongArch,包括3A5000㊁3B5000㊁3C5000及后续型号㊂
LoongArch具有自主研发㊁技术先进㊁兼容生态三方面特点㊂自主研发:龙芯指令系统架构在整个架构的顶层规划各部分的功能定义;对每条指令的编码㊁名称㊁含义等都进行了自主设计,具有充分的自主性㊂技术先进:作为自主研发的新架构,龙芯指令系统架构从设计初始,一方面摒弃了其他传统指令系统中已经不适应软硬件设计技术当前发展趋势的部分陈旧内容,另一方面也吸纳了诸多近年来指令系统设计领域的先进发展成果,因此不仅在硬件方面是便于高性能低功耗的设计,而且在软件方面也易于编译优化以及操作系统和虚拟机的开发㊂兼容生态:龙芯指令系统架构在设计时充分考虑了兼容生态的需求,在融合了各国际主流指令系统主要功能特性的同时,也依托龙芯团队在二进制翻译方面十余年的技术创新积累,对多种国际主流指令系统实现了高效的二进制翻译,从而实现了对X86㊁ARM等指令系统平台上二进制应用程序的高效运行,达到了生态融合的目的㊂
软件生态是龙芯指令系统架构能否成功的基础和关键㊂基于自主指令系统构建基础软件生态需要 2+ 3+3+2 的十大能力㊂一是需要迁移BIOS和操作系统内核到LoongArch,其中操作系统内核还包含虚拟化㊁图形㊁网络等驱动程序㊂二是三大编译器,包括GCC㊁LLVM和GoLang㊂三是三大虚拟机,包括Java㊁JavaScript和.NET㊂四是两大二进制翻译系统,包括从X86到LoongArch的二进制翻译系统和从ARM到LoongArch的二进制翻译系统㊂在上述 2+3+3+2 的十大能力基础上,就能够突破指令系统的壁垒,构建LoongArch的软件生态体系㊂龙芯公司通过长期的技术积累掌握了上述十大能力,奠定了应用软件生态全面持续发展的良好基础㊂
2㊀建成基于LoongArch的基础软件技术体系
㊀㊀基础软件技术体系是CPU生态发展的基石,在计算机应用和计算机硬件之间起到承上启下的关键作用㊂图1以层次结构的形式描述了基于LoongArch的软件技术体系㊂其中系统架构层㊁编译工具与运行环境层㊁专项技术层属于基础软件体系㊂
系统架构层包括固件㊁内核㊁虚拟化系统㊁驱动系统等,其中虚拟化系统和驱动系统与内核紧密关联,也可以被认为是内核的组成部分㊂固件及内核除了与指令系统相关,还与硬件结构紧密相关㊂LoongArch的固件和内核块已经由龙芯公司完成开发并负责维护㊂为了实现操作系统级的二进制兼容,龙芯公司还制定了涵盖CPU㊁桥片㊁固件㊁操作系统内核的技术发展标准,实现了龙芯统一系统
结构标准规范㊂在该架构规范下,一个操作系统的二进制可以在LoongArch的不同CPU和不同主板上直接安装运行㊂
编译工具与运行环境层包括GCC编译器㊁LLVM 编译器㊁GoLang编译器三大编译器以及Java虚拟机㊁JavaScript虚拟机㊁.NET虚拟机三大虚拟机㊂有了上述编译工具,就可以构建出整个操作系统㊂上述三大编译器和三大虚拟机与指令系统紧密相关,已经由龙
㊀㊀
图1㊀基于LoongArch的软件生态层次结构
芯公司完成开发并负责维护㊂
专项技术层包括浏览器㊁图形系统㊁音视频系统㊁数据库㊁中间件㊁容器系统等㊂龙芯公司设置专门的团队负责浏览器㊁媒体播放器㊁图形系统㊁Docker容器等技术的开发和维护,并支持合作伙伴研发龙芯平台的数据库㊁中间件等软件产品㊂这些专项技术都已经在LoongArch平台落地生根,支撑各自领域规模化的产品应用㊂
应用系统层包括办公软件㊁版式文件㊁㊁图形应用㊁科学计算㊁办公自动化㊁大数据及AI应用等㊂龙芯公司联合全产业链伙伴共同建设应用系统层的生态,主要的OA娱乐等应用厂商都已经发布了基
于LoongArch的产品㊂
经过多年的努力,LoongArch的基础软件趋于完善,下一步的研发重点将更加注重操作系统与应用的结合部,从应用兼容性和自主编程框架等方面取得突破㊂
3㊀构建兼容及自主的编程框架
应用的兼容性问题是Linux系统普遍存在一个问题,体现在基于Linux的不同操作系统(如Loongnix㊁统信㊁麒麟)应用不兼容以及同一操作系统随开源社区进行版本升级后可能导致原应用不兼容㊂例如,由于统信和麒麟操作系统打包格式㊁库版本的不完全一致,虽然同为Linux操作系统,即使在相同硬件上,应用开
发者(如)仍需要分别针对统信和麒麟操作系统
开展迁移工作,而且随着统信或麒麟操作系统的升级,
可能还需要重新迁移㊂为了解决上述问题,龙芯公司
正在实现LoongArch平台上不同厂家㊁不同版本操作
系统的应用兼容框架㊂在该框架下,应用开发者(如微
信)针对LoongArch的Linux平台只需要迁移一次(如
迁移到统信平台上),当该应用在其他Linux平台(如
麒麟或Loongnix)运行时,由龙芯公司开发的兼容包 提供 该应用需要的运行环境,实现该应用在其他Linux平台上的直接运行㊂实现跨Linux平台的应用
兼容是一项综合容器㊁虚拟机及自主打包格式等在内
的综合性技术,其中虚拟机主要针对操作系统内核升
级引起的兼容性问题㊂
自主操作系统的根本性标志是开发出自主编程语
言和编程应用框架㊂操作系统生态是否繁荣的直接标
志在于应用的数量,而应用产生于编程应用框架,是操
作系统平台的重要组成部分㊂从某种意义上说,基于Linux的国产操作系统都不是自主操作系统,而是开源操作系统的自主发行版㊂Android也源于Linux,但同一个APP可以在不同厂家的Android手机上直
接运行,且可以在升级后的Android平台上直接运行,就是因为Android设计了专门的编程语言和编程框架(Android Application Framework)㊂微软的Windows 和苹果的IOS也是如此㊂我国的操作系统由于没有自主的编程语言和编程框架,只能跟着开源的升级而不断升级,导致应用生态发散和无休止的适配㊂龙芯公司将在充分调研Android㊁IOS和Windows编程框架的基础上提出自主编程框架,实现从操作系统跟随性发展的 必然王国 走向自主发展的 自由王国 ㊂
4㊀通过二进制翻译补充LoongArch软件生态LoongArch作为一种新型指令系统,在其原生软件生态成熟之前,可借助二进制翻译技术兼容支持X86㊁ARM等生态的应用,以弥补其早期应用生态的不足㊂作为LoongArch的原生软件生态的补充,构建从X86到Loongarch的体系结构翻译器LATX (Loongson Architecture Translator from X86),从ARM 到Loongarch的体系结构翻译器LATA(Loongson
Architecture Translator from ARM)㊂LoongArch体系结构翻译器和之前翻译器工作的区别在于在LoongArch 定义时就充分考虑了多种指令系统二进制翻译的需求,强调更加紧密的软硬件协同,大幅提高了跨指令系统二进制翻译的效率㊂表1给出了LoongArch软件生态的结构㊂
表1㊀LoongArch二进制翻译示意表
Loongarch Linux APPs X86Windows/Linux
APPs
ARM Android
APPs LAT from X86LAT from ARM Loongnix on Loongarch
Loongarch
实现从X86平台到龙芯平台的高效二进制翻译,需要从3个层面展开工作㊂一是实现从X86指令到LoongArch指令的二进制翻译㊂二是为了提高翻译效率,为提高X86二进制翻译性能增加专门指令,比如增加一个包含170多条指令的LBT(Loongson Binary
Translation)扩展㊂三是为了运行X86的Windows应用,基于开源的Wine软件[7]在Linux上模拟出Windows的系统调用和驱动程序等功能,由于开源的Wine平台不够完善,需要对Wine进行完善和优化㊂龙芯二进制翻译系统将支持以下X86平台应用㊂(1)在龙芯平台上支持X86/Linux应用㊂X86/ Linux平台上有较为丰富的工程类软件,如EDA工具等㊂此外,X86/Linux上办公类软件也相对比较丰富,如腾讯QQ等㊂
(2)在龙芯平台上支持X86/Windows应用㊂为了运行X86/Windows应用,不仅需要通过LATX实现对指令的翻译,还需要类似于Wine的平台模拟Windows环境㊂目前,基于LATX+Wine平台已经可以在龙芯3A5000上运行包括㊁PhotoShop等在内的X86/Windows应用㊂
(3)在龙芯平台上支持X86/Windows外设㊂用户现场的不少老旧打印机未提供Linux系统驱动,无法在Linux类操作系统上使用㊂基于二进制翻译技术,在龙芯系统上采用虚拟化方式直接运行Windows原生驱动程序㊂目前,基于龙芯基础版操作系统Loongnix以及基于龙芯平台的商业操作系统已经开始集成支持此方案㊂
到2021年年底,LATX已经发布了Alpha版㊂龙芯公司将在兼容性和性能两个方面持续改进和优化LATX和Wine,争取到2022年达到可用水平㊂在此基础上,龙芯公司开展了LATA二进制翻译器的研究㊂力争通过持续改进和优化,实现在 十四五 期间消除指令系统壁垒,在LoongArch平台上方便地运行X86和ARM平台的软件㊂
5㊀推动LoongArch开源社区建设
全球的信息产业已经构筑在了以开源软件为基础的开放技术体系之上,龙芯的软件生态将深度融入国际开源软件发展的大格局㊂图2描述了龙芯软件生态的层次关系㊂第一层是上游开源软件社区,如内核社区㊁JDK社区㊁FFMPEG社区㊁Moziilla社区等,龙芯公司将联合开源软件界的全球力量,实现对LoongArch 的社区原生支持㊂第二层是国内外的操作系统社区,如龙蜥社区㊁欧拉社区㊁龙芯Loongnix社区㊁Debian社区等,这些社区将基于第一层上游开源社区对LoongArch支持的软件版本发布支持龙芯CPU的社区版操作系统㊂第三层是商业操作系统,如统信操作系统㊁麒麟操作系统等,基
于第一和第二层的工作成果,龙芯公司将支持和配合商业操作系统厂商研制支持龙芯CPU的品牌操作系统㊂
在上游开源软件社区,LoongArch已得到国际开源软件界广泛认可与支持,正在成为与X86㊁ARM并列的顶层生态系统㊂龙芯公司积极推进在上游开源软件社区的LoongArch生态建设工作,已从国际GNU组织获得表征LoongArch的专属架构编号(ELF Machine 编号,258号)㊂至本文撰稿时,基础编译工具链Binutils㊁主流视频编解码库FFmpeg㊁浏览器Javascript 引擎V8等重要软件社区已经发布了支持LoongArch 的最新版本,Linux内核㊁GCC编译器㊁LLVM编译器㊁GLibc库㊁.Net等社区正在实现对LoongArch的原生支持㊂从2022年起,龙芯公司将每年投入一定的经费资助海外社区开发者的工作㊂在得到上游开源软件社区的支持后,LoongArch生态将随社区自动演进,可以极大地丰富支持LoongArch的软件版本,大幅减少软件迁移适配工作㊂
图2㊀LoongRrch开源社区及商业操作系统
㊀㊀龙芯公司积极参与国内外操作系统社区的工作,并组建了Loongnix操作系统社区㊂在与广大合作伙伴的共同努力下,国内的龙蜥㊁欧拉等操作系统社区都已发布了支持龙芯CPU的社区版操作系统㊂通过捐赠机器㊁资助开发者㊁派驻人员等形式,龙芯公司积极支持Debian㊁Alpine等国际操作系统社区的龙芯版本研发工作㊂龙芯公司依托龙芯开源社区(loongnix),强化基础软件核心组件的研发与
优化,发布龙芯社区版操作系统Loongnix㊂作为龙芯软件生态建设的重要平台,Loongnix集成龙芯软件生态研发的最新成果,以 源码开放㊁免费下载 的形式进行发布,可应用于日常办公㊁生产㊁生活等场景㊂
操作系统有两种典型的商业模式,一是微软的Windows闭源授权模式,二是谷歌的Android开源基础版模式㊂龙芯公司研制并提供基于LoongArch的基础版操作系统Loongnix,支持包括统信㊁麒麟在内的专业操作系统企业推出的品牌操作系统,并且同时支持整机和系统企业基于Loongnix的定制操作系统㊂龙芯公司基于Loongnix平台体系和操作系统发展模式,将统一系统架构㊁应用兼容框架等技术标准规范贯穿实施到产业技术链的各个环节,使得龙芯平台的操作系统实现跨整机兼容㊁CPU代际兼容和应用升级兼容㊂龙芯公司还组建了应用合作社,作为聚集开发者的平台和发布应用的渠道㊂通过商务模式创新,龙芯公司聚集国内外的应用开发者开发应用,通过规范组织和管理,实现应用生态的繁荣发展㊂6㊀结束语
我国信息产业的根本出路在于构建独立于Wintel 体系和AA体系的自主信息技术体系㊂基于自主研发的CPU构建自主可控的信息技术体系任重道远,,但前途光明,有利于国家产业发展和人民生活改善㊂指令系统和生产工艺是信息产业的两个重要基石㊂构建自主信息技术体系必须而且只能基于自主指令系统㊂本文从龙芯指令集系统㊁操作系统㊁二进制翻译㊁开源社区建设等方面介绍了基于自主指令系统构建软件生态的已有进展和工作计划㊂预计再经过1~2年的努力,就能够完成上述基于LoongArch的基
础软件生态建设,引领我国基础软件的生态建设从以前的跟随性发展道路走向自主发展道路㊂
x86架构和arm架构区别
参考文献
[1]OFweek电子工程师网.我国电子信息百强利润总额884亿元不抵苹果一半[EB/OL].(2018-08-09)[2022-02-23].ee.ofweek/2012-08/ART-8100-2800-28631174.html.
[2]证券时报.苹果2016年营业利润占全球市场份额近八成[EB/OL].(2017-03-09)[2022-02-23]. kuaixun.stcn/2017/0309/13099890.shtml. [3]Apple Inc.Form10-K for the fiscal year ended september 29[R],2018.
[4]联想集团有限公司.2018/19年报[R],2019.
[5]Intel Corporation.2018Annual Report[R],2019.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。