龙芯中科董事长胡伟武:龙芯基础软件生态建设思路

导语:龙芯架构摒弃了传统指令系统中部分不适应当前软硬件设计技术发展趋势的陈旧内容吸纳了近年来指令系统设计领域诸多先进的技术发展成果不仅做到了在硬件方面易于高性能低功耗的设计还在软件方面易于编译优化和操作系统虚拟机的开发

构建独立于Wintel体系和AA体系的安全可控的信息技术体系是国家战略,也是龙芯的发展目标。经过20多年的努力,2021年,龙芯公司正式推出的龙芯3A5000的通用处理性能已经逼近市场主流产品的水平,正在研制的下一代龙芯3A6000及3A7000系列性能将达到市场主流产品的水平。龙芯自主生态建设的主要瓶颈已经从CPU性能不足转为软件生态不够丰富。本文将从指令系统、操作系统、二进制翻译、工控操作系统、开源社区等方面介绍龙芯软件生态建设思路。


推出自主指令系统LoongArch


指令系统是CPU所执行的软件指令的二进制编码格式规范,是计算机的软硬件界面,是信息产业的重要基石。一种指令系统承载了一个产业生态,如X86指令系统承载桌面计算机和服务器产业,ARM指令系统承载手持移动终端产业。但中国的信息产业可以基于国外指令系统做产品,但不可能基于国外指令系统构建安全可控的信息技术体系和产业生态。


2021年,基于二十年的CPU研制和生态建设积累,龙芯中科推出了龙芯指令系统架构LoongArch,包括基础架构部分、虚拟化、二进制翻译、向量指令等扩展部分,拥有近2000条指令。龙芯中科新研制的CPU均支持LoongArch架构,包括3A5000、3B5000、3C5000及后续型号。

图1 LoongArch软件生态结构


龙芯架构具有自主研发、技术先进、兼容生态三方面特点。从整个架构的顶层规划,到各部分的功能定义,再到细节上每条指令的编码、名称、含义,龙芯架构都进行了自主设计。龙芯架构摒弃了传统指令系统中部分不适应当前软硬件设计技术发展趋势的陈旧内容,吸纳了近年来指令系统设计领域诸多先进的技术发展成果,不仅做到了在硬件方面易于高性能低功耗的设计,还在软件方面易于编译优化和操作系统、虚拟机的开发。我们在设计时充分考虑兼容生态需求,融合了各国际主流指令系统的主要功能、特性,同时依托龙芯团队在二进制翻译方面十余年的技术积累创新,实现了多种国际主流指令系统的高效二进制翻译,高效运行X86、ARM等架构上的二进制应用程序,从而达到生态融合的目的。 


龙芯自主指令系统的推出,是龙芯中科长期坚持自主研发理念的重要成果体现,是在完成CPU性能补课、全面转向生态建设历史关头的重大技术跨越,标志着龙芯中科在自主信息技术体系和产业生态建设方面从跟随性发展的“必然王国”走向了自主发展的“自由王国”。


龙芯基础版操作系统和商业操作系统


操作系统有两种典型的商业模式,一是微软的Windows闭源授权模式,二是谷歌的Android开源基础版模式。龙芯中科研制并提供基于LoongArch的基础版操作系统Loongnix,支持包括统信、麒麟在内的专业操作系统企业推出品牌操作系统,同时支持整机或系统企业基于Loongnix定制操作系统。 


Loongnix操作系统分为面向终端型应用的Loongnix_Desktop以及面向服务器应用的Loongnix_Server,前者基于Debian进行龙芯CPU的适配优化,后者基于CentOS进行龙芯CPU的适配优化。龙芯中科基于Loongnix平台开展操作系统核心模块的迁移适配、研发和优化,支持硬件兼容的统一系统架构,支持应用兼容的统一编程框架。 


在操作系统核心模块方面。完成包括BIOS、内核、GCC编译器、LLVM编译器、GoLang编译器、Java虚拟机、JavaScript虚拟机、.NET虚拟机、浏览器、媒体播放器、图形库、Spice、KVM、Docker等操作系统核心模块向LoongArch的迁移和优化,联合合作伙伴对版式文件、流式文件、微信等进行迁移和优化。结合应用需求,将大量外设驱动迁移到龙芯平台。


在硬件兼容的统一系统架构方面,通过对CPU、桥片、BIOS、操作系统内核的升级规范,我们构建了统一系统结构。在该架构规范下,一个操作系统的应用可以在LoongArch架构的不同CPU和不同主板上直接安装。在应用兼容的统一编程框架方面,应用的兼容性问题是Linux系统普遍存在一个问题,体现在不同的、基于Linux的操作系统(如Loongnix、统信、麒麟)应用不兼容以及同一操作系统随开源社区进行版本升级后可能导致原应用不兼容。为了解决上述问题,龙芯公司正在构建LoongArch平台上不同厂家、不同版本操作系统的应用兼容框架。该框架支持用户在不同版本的Linux平台上应用二进制高效迁移。在此基础上,龙芯公司还开发了自主的编程语言和编程模型,鼓励客户基于龙芯自主编程模型开发应用。 


通过二进制翻译融合软件生态


作为一种新型指令系统,在其原生软件生态成熟之前,LoongArch将借助二进制翻译实现与X86、ARM等指令系统应用的二进制兼容弥补早期应用生态的不足。作为LoongArch的原生软件生态的补充,需要构建从X86到Loongarch的体系结构翻译器LATX(Loongson Architecture Translatorfrom X86)和从ARM到Loongarch的体系结构翻译器LATA(Loongson Architecture Translatorfrom ARM)。


LoongArch体系结构翻译器和前人工作的区别是在LoongArch定义时就充分考虑多种指令系统二进制翻译的需求,强调更加紧密的软硬件协同,大幅提高了跨指令系统二进制翻译的效率。目前,龙芯二进制翻译系统可以支持较多X86平台应用。


一是在龙芯平台上支持X86/Linux应用。X86/Linux平台上有较为丰富的工程类软件,如EDA工具。此外,X86/Linux上办公类软件也相对比较丰富。


二是在龙芯平台上支持X86/Windows应用。运行X86/Windows应用不仅需要通过LATX实现对指令的翻译,还需要类似于Wine的平台模拟Windows环境。目前,基于LATX+Wine平台,用户已经可以在龙芯3A5000上运行包括微信、PhotoShop等在内的X86/Windows应用。龙芯公司将在兼容性和性能两个方面持续改进和优化LATX和Wine。


三是在龙芯平台上支持X86/Windows外设。用户的不少老旧打印机未提供Linux系统驱动,无法在Linux类操作系统上使用。基于二进制翻译技术,用户可以在龙芯系统上采用虚拟化方式直接运行Windows原生驱动程序。无须再适配,不依赖网络,在隔离本地数据的同时实现了本机打印。目前,基于龙芯基础版操作系统Loongnix以及基于龙芯平台的商业操作系统已经开始集成并支持此方案。 


建立面向工业控制的生态体系


如果说,Android改造了服务业(打车、购物、吃饭),那如今,我们需要一个平台来改造制造业。LoongOS是一个以实时操作系统内核为基础、面向工业互联网和高可靠行业终端的操作系统。该操作系统把控制系统App化,如在LoongOS上编写“飞机App”来控制飞机,编写“坦克App”来控制坦克,编写“高铁App”来控制高铁。 


LoongOS是具备精简、高效、实时特征的工控类操作系统,基于通用Linux内核,利用RT-Linux技术实现实时性。LoongOS简化了复杂的传统个人计算机图形系统,支持FrameBuffer、EGL、Wayland三种图形应用模式,其中FrameBuffer(二维)和EGL(三维)都是单窗口应用全屏模式,具备系统轻量、启动迅速、开发便捷等特点;Wayland模式可以支持多窗口应用,基于OpenGL实现了全功能的三维驱动和编程接口,具备简洁的个人计算机图形环境。LoongOS三种图形模式都支持图形编程开发和应用环境,支持兼容VxWorks的RTAPI编程接口。针对嵌入式系统的需求,LoongOS实现了文件系统加固、掉电保护、分区保护、安全隔离等功能。


LoongOS具有丰富的API编程接口,并有配套的集成开发环境LDK,可根据需求灵活定制专用系统。LDK支持可视化安装、远程调试,支持所见即所得的开发方式。目前,LoongOS已经在不少对显示要求很高的显控系统中得到应用。龙芯公司将持续改进和优化LoongOS,使之成为面向工控类应用的平台型操作系统。


图2 龙芯平台上运行 Windows 平台打印机的驱动原理



龙芯开源社区建设


开源社区汇集了CPU生态的开发者和软件资源。龙芯积极参与社会主流开源软件项目及社区,对LoongArch源码进行维护,并“反哺”开源上游社区。龙芯公司正在积极推动上游社区建立LoongArch分支。在国际开源社区建立与X86、ARM等架构并列的Loongarch分支是龙芯生态的根基。目前,LoongArch已从GNU组织获得表征二进制格式的ELFMachine编号(258号),二进制开发工具binutils已经并入开源社区,GCC、C库、内核正在并入开源社区,以浏览器为代表的部分基础软件也已并入开源社区。


2022年起,龙芯将每年投入一定的经费资助海外社区开发者的工作。在得到上游开源社区支持后,LoongArch生态将随社区自动演进,并以此丰富、支持LoongArch的软件版本,大幅减少软件迁移适配工作。 


龙芯开源社区(loongnix.org)是龙芯CPU的基础软件生态建设平台,由龙芯中科组织并联合产业链合作厂商(合作者)、国际开源软件社区及开源爱好者共同参与建设。社区以“开源、开放”的形式进行管理,设置BIOS、Linux内核、编译器GCC、Java虚拟机、龙芯浏览器(Firefox、Chromium)、媒体解码库、图形桌面、KVM虚拟机等重要基础软件项目。经过多年建设,信息化应用中的主流编程语言和开发环境都能够在龙芯平台上获得完善支持。


Loongnix操作系统是龙芯开源社区推出的Linux发行版,作为龙芯软件生态建设的成果验证和展示环境,Loongnix操作系统集成了内核、驱动、图形环境等操作系统基础设施方面的最新研发成果,以“源码开放、免费下载”的形式进行发布,可直接应用于日常办公、生产、生活等应用环境,同时可供合作厂商、科研机构及爱好者等在龙芯平台上研发自身的品牌软件或专用系统。



作者:龙芯中科技术股份有限公司董事长 胡伟武


暂无评论,等你抢沙发

  • 短信登录
  • 密码登录
还没有账号,
登录即代表您同意本网站的 《用户注册协议》
还没有账号,
登录即代表您同意本网站的 《用户注册协议》
注册
已有账号, 立即登录
登录即代表您同意本网站的 《用户注册协议》
找回密码