RISC-V工具链简介

简介: 本文是RISC-V知识图谱系列内容中“工具链”主题的首篇文章,主要介绍了工具链及其重要性,阐述了RISC-V工具链的现状,并对剑池系列工具链作了简单描述。

本文作者:云海


前言

最近RISC-V比较火,它的开放性和可扩展性打开了人们对可定制处理器的想象空间,因此众多半导体公司纷纷加入试水,也吸引了大规模的开发者涌入。RISC-V相关文章已经成为技术界的新生“网红”,成为开发者们的焦点。在这些文章中,“工具链”这个名词会被经常提到,但对它的介绍却寥寥无几,今天我们来揭开它的神秘面纱。


一、什么是工具链

“工具链”是英文“toolchain”的翻译,它指辅助开发者完成程序开发、调试、性能分析调优等开发优化行为的一系列工具集合。它一般包含编译器、汇编器、链接器、调试器、模拟器等基础工具,集成开发环境作为一种图形化的综合开发工具也可以被纳入其中。由于指令集和用户编程模型不同,因此每个架构都需要一套完整的、独有的工具链。


二、工具链的重要性

可能有人会提问,既然是辅助工具,那么就是个非必需品也没有那么重要。这句话一半对一半错。在计算机发展的早期,几乎没有工具链,科学家通过在程序卡片上打孔来表示不同指令的编码,计算机读取程序卡片的打孔信息执行指令流。随着制造工艺和计算机的发展,现代计算机的指令码存储于在ROM、RAM、Flash等介质中,把指令码下载到指定的存储空间需要经过复杂的控制流程,因此必须需要借助于程序下载器才能完成下载。


为了提升程序开发效率,涌现了众多的高级开发语言。目前99%以上的开发者都使用高级语言完成业务的开发,然后使用编译器把高级语言翻译成目标机器指令下载到机器中执行。因此编译器成了工具链中个必不可少的组件。另外,程序有了bug怎么办?需要调试系统辅助开发者找到程序运行出错的原因;程序性能不够怎么办?需要性能分析器辅助开发者进行性能调优。因此,对于现代计算机系统,一套稳定、完整的开发工具链是一个架构基础的基础,所有软件的运行都依赖工具链;没有工具链,CPU和硬件无法使用,开发者寸步难行。


上面是从功能完备性说明工具链的重要性,后面通过对工具链的关键指标介绍,从原理上阐述工具链已经不是单纯的辅助工具,它是影响目标架构各方面指标的关键路径。工具链的关键指标可分为高效性和易用性两个方面。高效性又包括编译高效性、调试高效性、性能分析高效等,其中编译的高效性尤为重要。


通过上文介绍,编译器是用于把高级语言翻译成目标机器指令的软件;一段高级语言会被翻译成若干条机器指令,编译器在保证功能正确的前提下,翻译出的机器指令数量和质量也非常关键,直接影响程序运行所需花费的时间和程序占用空间,即影响了处理器的性能和代码密度表现。因此,处理器性能是硬件+工具链的综合能力体现,单比较硬件频率指标没有实际意义。另外调试高效性直接影响了开发者分析解决问题效率,也是决定了处理器能否开发者接受、是否可以被广泛应用。


三、RISC-V工具链的现状

既然工具链这么重要,那么RISC-V的工具链现状如何,能否满足当前的应用需求?由于RISC-V的开放特性,加上基金会对软件生态的持续运作,吸引了大量的开发者投入到工具链的补充和完善工作上。目前从编译工具(GCC+LLVM)、调试工具到集成开发环境,在基本功能上都已经支持,但在高效性和易用性上仍需要继续加强和提升。如编译得到的程序代码大小相对ARM仍然存在不少差距;缺少性能调优工具;缺少图形化实时操作系统调试工具;开源的集成开发环境只支持简单的调试插件等,这些方面都需要工具链开发者不断地进行完善,并通过应用场景的验证和打磨。

四、剑池系列工具链

剑池系列工具链以开源工具链为基础,根据应用场景和玄铁处理器微架构高度优化的开发工具集合(见图1)。配合玄铁Turbo指令集,在XT906上相对开源版本平均有13%的性能提升,在XT910上平均有20%的性能提升。开发了基于指令Trace的性能分析工具,配合集成开发环境的图形化界面,为开发者提供快速性能profiling和优化的能力。另外,开发了两套集成开发环境,分别面向MCU应用开发和通用应用开发,降低现有工程迁移到RISC-V架构芯片上的难度。关于剑池系列工具链的每个工具,在后续的文章中会做详细介绍。

2.png

五、小结

工具链是一个体系架构的重要且不可缺失的组成部分,它是基础软件的基础。RISC-V工具链经过几年的发展,在功能上已经日渐完善;相信接下来的几年里,经过开源社区开发者和商业公司的共同努力,在编译调试高效性和易用性方面会有明显的提升,RISC-V的芯片也会被更多的开发者接受,被应用到各种场景。

相关文章
|
机器学习/深度学习 人工智能 算法
|
存储 缓存 人工智能
玄铁 E906处理器简介|学习笔记
快速学习玄铁 E906处理器简介
3285 0
玄铁 E906处理器简介|学习笔记
|
7月前
|
人工智能 自然语言处理 搜索推荐
传统产品经理思维在AI时代‘失灵’,能力图谱如何助力AI产品经理构建认知框架?
本文AI产品专家三桥君探讨了AI产品经理在技术快速发展背景下如何通过构建AI能力图谱来指导智能产品设计。三桥君从知识与推理、自然语言处理、交互能力和辅助决策四个维度系统梳理AI核心能力,帮助产品经理理解技术边界与应用场景。能力图谱不仅是技术地图,更是方法论工具,能够有效指导从需求分析到产品落地的全流程,包括发现问题、设计闭环系统和规划产品路径。掌握这一框架将帮助AI产品经理突破技术认知局限,打造真正智能化的产品解决方案。
307 10
|
11月前
|
固态存储 C++ 计算机视觉
Windows平台GIMP 2.10下载教程:零基础入门高级图像编辑
GIMP(GNU Image Manipulation Program)是一款开源跨平台图像编辑工具,支持图层管理、高级修图、色彩校正等功能,广泛应用于平面设计和照片修复。其优势包括全功能免费、插件生态丰富(600+扩展插件)、硬件要求低(1GB内存即可流畅运行)。本文详细介绍GIMP的软件定位、安装流程、首次配置及常见问题解答,帮助用户快速上手并充分利用其强大功能。
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
算法 数据安全/隐私保护
BFS(Breath First Search 广度优先搜索)
BFS(Breath First Search 广度优先搜索)
356 1
|
Web App开发 Linux Python
linux上安装selenium环境及测试
该文章提供了在Linux CentOS上安装Selenium环境、Chrome浏览器及Chromedriver的详细步骤,并演示了如何以无头模式进行测试。
1338 0
|
运维 监控 Java
【JVM 调优秘籍】实战指南:JVM 调优参数全解析,让 Java 应用程序性能飙升!
【8月更文挑战第24天】本文通过一个大型在线零售平台的例子,深入探讨了Java虚拟机(JVM)性能调优的关键技术。面对应用响应延迟的问题,文章详细介绍了几种常用的JVM参数调整策略,包括堆内存大小、年轻代配置、垃圾回收器的选择及日志记录等。通过具体实践(如设置`-Xms`, `-Xmx`, `-XX:NewRatio`, `-XX:+UseParallelGC`等),成功降低了高峰期的响应时间,提高了系统的整体性能与稳定性。案例展示了合理配置JVM参数的重要性及其对解决实际问题的有效性。
558 0
|
存储 编译器 开发工具
RISC-V生态全景解析(七):RISC-V工具链简介
编辑语: 芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。
1587 0
RISC-V生态全景解析(七):RISC-V工具链简介
|
算法 API 开发工具
T-Head DebugServer
T-Head DebugServer 是一种用于调试和测试 TEE 应用程序的工具。它可以在 TEE 中运行并提供一个调试接口,允许开发人员通过该接口与 TEE 应用程序进行交互和调试。
1206 3