资源描述
目录RISC-V 处理器架构.51.RISC-V 架构起源.52.RISC-V 架构发展.53.RISC-V 架构与 X86、ARM 在商业模式上的区别.64.RISC-V 架构现状和未来.75.RISC-V 处理器课程学习.9平头哥玄铁 CPU IP.101.概述.102.面向低功耗领域 CPU.103.面向中高端服务器 CPU.164.面向高性能领域 CPU.235.玄铁 CPU 课程学习.26无剑平台.271.无剑 100 开源 SoC 平台.272.无剑 600 SoC 平台.28平头哥 RISC-V 工具链.341.RISC-V 工具链简介.342.剑池 CDK 开发工具.373.玄铁 CPU 调试系统.444.HHB.515.剑池 CDK 开发工具课程学习.54平头哥玄铁 CPU 系统.551.YoC.552.Linux.563.Android.62RISC-V 玄铁系列开发板实践.671.基于玄铁 C906 处理器的 D1 Dock Pro 开发实践.672.基于玄铁 E906 处理器的 RVB2601 开发实践.82RISC-V 应用领域开发示例.1001.基于 D1 Dock Pro 应用开发示例.1002.基于 RVB2601 应用开发示例.106RISC-V 未来探索.1161.平头哥开源 RISC-V 系统处理器.1162.平头哥对 RISC-V 基金会贡献.1173.高校合作.117RISC-V 处理器架构5RISC-V 处理器架构1.RISC-V 架构起源RISC-V 架构是一种开源的指令集架构。最早是由美国伯克利大学的 Krest 教授及其研究团队提出的,当时提出的初衷是为了计算机/电子类方向的学生做课程实践服务的。由于这是伯克利大学研究并流片的第五代 RISC 架构处理器,因此就命名为 RISC-V,其中“V”是罗马字母的数字 5 的意思。2015 年,RISC-V 架构开始以基金会的形式运营,Google、Nvidia、WesternDigital 等国际知名的互联网和半导体企业都是其创始会员。2020 年,RISC-V 基金会考虑到整个组织和技术的中立性,将总部由美国迁移到了欧洲的瑞士(瑞士一直是国际上有名的中立国,在第一次世界大战和第二次世界大战期间都保持了中立国的角色),并将名字由 RISC-V Foundation 改名为 RISC-V International,RISC-V 国际希望坚持架构的中立、开放与普惠,并服务于全球技术生态。2.RISC-V 架构发展在处理器发展的几十年历史中,各种处理器架构曾经层出不穷,从开始的 IntelX86 架构,到后来的 IBMPOWER 架构、MIPS 架构、DECAlpha 架构、SunSparc 架构以及后来的 ARM 架构,此外还有 Motorola、TI、Hitachi、RENESAS 等各种小众处理器架构等,各种处理器架构曾百花齐放过。RISC-V 处理器架构6但是经过近 30 年产业的大浪淘沙,其他的处理器架构逐步地留在了历史的博物馆中,目前只留下了 X86 和 ARM 两大强势的处理器架构。未来,从全球开发者的角度看,一定是希望基于有限的处理器架构做上层软件的开发,因此可以基本确定的是未来只有2-3 家处理器架构可以存活下来,而 RISC-V 有很大概率成为继 X86 和 ARM 架构之外,处理器架构的第三级(甚至是第二级)。3.RISC-V 架构与 X86、ARM 在商业模式上的区别我们介绍了 X86 架构是一种完全封闭的指令架构,相比之下 ARM 架构是一种“开放”的指令架构,只要获得了 ARM 的 IP 授权就可以使用 ARM 架构并享受之上沉淀的软件生态。但是 ARM 也只是“开放”,在 ARM 之后,RISC-V 出现了。RISC-V 不是一种技术的创新(因为在此之前已经有非常多的成熟优秀的 RISC 架构了),而是商业模式的重大变革,RISC-V 直接将指令架构给“开源了”(注意此处是开源),这是之前完全没有的一种新的指令架构运营模式(虽然 OpenRISC 等也是开源,但是后文会分析为什么 RISC-V 会做得比 OpenRISC 成功)。RISC-V 通过“指令架构开源”与“架构标准全球开放讨论”两大杀手锏吸引全球的处理器架构大拿、软件开发者与开源爱好者围绕着它做全球生态建设。读者看到这里是不是有种“众人拾柴火焰高”的感觉,这也是 RISC-V 架构的高明之处,说白了,RISC-V 是一种与 X86 和 ARM 完全不一样的运作方式,他将指令集架构推进到了一种最极致的方式:就是指令架构开源,全球无论是企业、研究所、个人都可以完全免费使用。RISC-V 和 X86、ARM 的竞争完全是不同维度的竞争,他们三个分别是全球处理器技术演进在不同阶段的产物,而基本可以确定的是未来三种架构会长期共存,只是应用的侧重领域有所不同罢了。RISC-V 处理器架构7看到这里,读者可能有一些疑问,在 RISC-V 之前,已经有 OpenRISC 等开源指令架构了,那为什么 OpenRISC 没起来,而是 RISC-V 起来了。笔者认为这主要还是得益于伯克利团队的根正苗红以及恰到好处的运营方式,伯克利大学和斯坦福大学在历史上首次提出了精简指令集架构的处理器并完善了其基础理论,对处理器架构的发展做出了巨大贡献,所以当伯克利大学提出了 RISC-V 指令集并开源的时候迅速获得了工业界和开发者的高度关注,这之后 Krest 教授团队又采用第三方独立的基金会的方式进行运营,其“中立”和“开放”的属性吸引了大批的企业和开发者投身其中。这之后,虽然 MIPS 也想模仿 RISC-V,但是由于其中立属性问题以及企业的日薄西山,MIPS 架构开源的事情草草收场。4.RISC-V 架构现状和未来现在,虽然 RISC-V 架构还不完善,在诸如安全、虚拟化架构、IOMMU/SMMU、中断控制架构、RAS(Reliability,Availability and Serviceability)等方面还刚起步,在代码密度(code size)、虚拟内存管理、原子操作效率等方面也还存在一些缺陷,但这不会妨碍 RISC-V 架构的长远向好发展,因为其开源的本质不曾改变。RISC-V 处理器架构8回顾 Linux 内核的发展历史,在 Linux 内核之前,IBM 的 Unix 收费操作系统无论在稳定性和用户体验上都是非常成功的,而相比之下刚出道的 Linux 内核无论在稳定性以及用户体验上都比较糟糕,但是由于 Linux 内核的开源属性迅速在 5 年时间内(1991 年到 1996 年)吸引了超过 350 万开发者的使用。经过 30 年的发展,Linux 操作系统(基于 Linux 内核开发的各种操作系统)已经成为世界上最主流的操作系统之一(Windows 主要在桌面机,IOS/安卓主要在智能手机和平板电脑),无论在服务器、云计算以及嵌入式领域基本已是 Linux 内核的天下。微软公司也在 2016 年加入了 Linux 基金会并成为 Linux 社区的主要贡献企业之一。同样的,RISC-V 虽然现在有不足和缺陷,但是基本可以确定的是,会有大量的企业、高校与个人爱好者会持续地围绕 RISC-V 开发并不停地推动 RISC-V 架构的成熟完善。这里需要稍微引申一下的是,虽然 RISC-V 架构本身是开源的,但是基于 RISC-V 架构开发的 CPU IP 核可以是收费的,这个道理很像开源的 Linux 与收费的 Redhat Linux 一样,Redhat 可以提供相较开源 Ubuntu/Debian 更好的稳定性及对上层软件的兼容性,同理的,商业的 RISC-V IP 核可以提供比开源核更好的稳定性、发展连续性、售后服务等。RISC-V 处理器架构95.RISC-V 处理器课程学习平头哥芯片开放社区官网上线了 RISC-V 系列课程培训,该课程和清华大学、大连理工大学等合作,包括由教育部评选为“国家级一流本科课程”的嵌入式软件设计,成为国内嵌入式教育的标杆课程。在“中国大学 MOOC”平台已开设 9 轮课程,累计选课人数达四万人次以上,广受学生欢迎。通过 XuanTie RISC-V Institute,可以学习该课程,通过云上实验室远程操作开发板进行实战应用。欢迎广大开发者登录 OCC 了解学习,学习后还可以参加在线 RISC-V 课程考试,考试通过后会颁发电子证书,进入账号【个人中心】可以查看到。平头哥玄铁 CPU IP10平头哥玄铁 CPU IP1.概述平头哥玄铁 CPU 是智能、安全、端云一体芯片架构的基石,为数字化时代提供计算核心。玄铁自诞生以来,坚持核心技术自研发展道路,新系列产品积极拥抱开源 RISC-V架构。玄铁 CPU 广泛应用于计算视觉、数据存储、工业互联、网络通信、智能家居、生物识别、信息安全等领域,截至目前,玄铁 CPU 累计授权芯片出货数量超过 30 亿颗。2.面向低功耗领域 CPU1)入门级微控制器:E902a)概述玄铁 E902 采用 2 级极简流水线并对执行效率进行了增强,典型工作频率150MHz,是首款支持硬件安全扩展技术的 RISC-V 处理器。可以应用在对功耗和成本极其敏感的IoT、MCU 等场景。E902 处理器体系结构的主要特点如下:平头哥玄铁 CPU IP11b)处理器简介E902 的结构框图如下所示:结构图 E902 处理器采用 2 级流水线结构:取指和执行。指令取指阶段主要负责从内存中获取指令;指令执行阶段主要负责指令译码、执行和回写。可配置的物理内存保护单元(Physical Memory Protection,PMP)负责物理地址的权限检查实现内存的保护功能,权限可划分为:不可读写/只读/可读写,可执行/不可执行。平头哥玄铁 CPU IP12TDT 调试单元(T-Head Debug Trace)支持各种调试方式,包括软件断点、内存断点、单步和多步的指令跟踪等多种方式,可在线调试 CPU、通用寄存器(GPR)、控制寄存器(CSR)和内存。E902 设计有片上紧耦合的 IP 接口和多条 AHB-Lite 的总线接口。片上紧耦合的 IP 接口集成处理器中断控制器(CLIC),支持中断嵌套以及处理器核局部中断(CLINT)。外部中断源数量最高可配置 240 个,中断优先级支持 4/8/16/32 级可配置。2)高能效微控制器:E906a)概述玄铁 E906 采用 5 级按序流水线,典型工作频率1GHz,可选性能优异的单精度浮点单元以及标量 DSP 计算单元。可以应用在无线接入、音频、中高端 MCU、导航等场景。E906 处理器体系结构的主要特点如下:b)处理器简介E906 的结构框图如下所示:平头哥玄铁 CPU IP13E906 处理器采用 5 级流水线结构:取指、译码、执行、内存访问、写回。取指阶段,访问指令 Cache 或者总线,获取指令,同时访问 BTB,发起 0 延时跳转。译码阶段,访问动态分支预测器和返回栈,发起分支的预测跳转,同时进行指令译码,读取寄存器堆,处理数据相关性和数据前馈。执行阶段,完成单周期整型计算指令和多周期乘除法指令的执行、存储/加载指令地址计算和跳转指令处理。其中,整型计算包括普通的算术指令和逻辑指令。内存访问阶段,利用执行阶段产生的存储/载入指令的目标地址访问数据 Cache 或者总线。写回阶段,将指令执行结果写回寄存器堆。可配置的物理内存保护单元(Physical Memory Protection,PMP)负责物理地址的权限检查,实现内存的保护功能。权限可划分为:不可读写/只读/可读写,可执行/不可执行。调试单元支持各种调试方式,包括软件断点、内存断点、单步和多步的指令跟踪等,可在线调试 CPU、通用寄存器(GPR)、控制寄存器(CSR)和内存。平头哥玄铁 CPU IP14E906 设计有片上紧耦合的 IP 接口和多条 AHB-Lite 的总线接口。片上紧耦合的 IP 接口集成矢量中断控制器(CLIC),支持中断嵌套。外部中断源数量最高可配置 240 个,中断优先级支持 4/8/16/32 级可配置。3)计算增强型微控制器:E907a)概述玄铁 E907 采用 5 级按序流水线,典型工作频率1GHz,是玄铁 MCU 处理器中的性能最高的处理器核,可选配高性能浮点以及 DSP 计算单元,同时支持 TCM 扩展以及中断加速技术以进一步提升实时性。可以应用在语音入口 MCU、TWS、MPU、多模无线接入等场景。E907 处理器体系结构的主要特点如下:b)处理器简介E907 的结构框图如下所示:平头哥玄铁 CPU IP15E907 处理器采用 5 级流水线结构:取指、译码、执行、内存访问、写回。取指阶段,访问指令 Cache 或者外部总线,获取指令,同时访问 BTB,发起 0 延时跳转。译码阶段,访问动态分支预测器和返回栈,发起分支的预测跳转,同时进行指令译码,读取寄存器堆,处理数据相关性和数据前馈。执行阶段,完成单周期整型计算指令和多周期乘除法指令的执行、存储/加载指令地址计算和跳转指令处理。其中,整型计算包括普通的算术指令和逻辑指令。内存访问阶段,利用执行阶段产生的存储/载入指令的目标地址访问数据 Cache 或者外部总线。写回阶段,将指令执行结果写回寄存器堆。平头哥玄铁 CPU IP16可配置的物理内存保护单元(Physical Memory Protection,PMP)负责物理地址的权限检查实现内存的保护功能,权限可划分为:不可读写/只读/可读写,可执行/不可执行。调试单元(Debug Module,以下简称 DM)支持各种调试方式,包括软件断点、内存断点、单步和多步的指令跟踪等多种方式,可在线调试 CPU、通用寄存器(GPR)、控制寄存器(CSR)和内存。E907 设计有片上紧耦合的 IP 接口和两条主设备总线接口。片上紧耦合的 IP 接口集成矢量中断控制器(CLIC),支持中断嵌套。外部中断源数量最高可配置 240 个,中断优先级支持 4/8/16/32 级可配置。3.面向中高端服务器 CPU1)高能效应用处理:C906a)概述玄铁 C906 采用 5-8 级变长流水线,典型工作频率1GHz,标配内存管理单元,可运行 Linux 等操作系统,并可选性能优异的单精度浮点和矢量运算单元。可以应用在消费类 IPC、多媒体、消费类电子等场景。C906 处理器体系结构的主要特点如下:平头哥玄铁 CPU IP17b)处理器简介C906 的结构框图如下所示:C906 核内子系统主要包含:指令提取单元(IFU)、指令译码单元(IDU)、整型执行单元(IU)、浮点单元(FPU)、可配的矢量执行单元(VPU)、存储载入单元(LSU)、指令退休单元(RTU)、虚拟内存管理单元(MMU)、物理内存保护单元(PMP)、主设备接口单元(AXI Master IF)等。2)兼容 64 位高能效处理:C908a)概述玄铁 C908 采用 9 级双发按序流水线,典型工作频率2GHz,通过指令融合技术进一步提升流水线效率,实现了卓越的能效比。兼容 RVA22 标准,同时兼容 RISC-V 最新Vector1.0 标准以进一步提升 AI 算力。可以应用在行业 IPC、智能交互、AR/VR、无线通讯等场景。平头哥玄铁 CPU IP18C908 核心的主要特点:b)处理器简介C908MP 结构框图如下图所示。平头哥玄铁 CPU IP19C908 核内子系统主要包含:指令提取单元(IFU)、指令执行单元(IEU)、矢量浮点执行单元(VFPU)、存储载入单元(LSU)、虚拟内存管理单元(MMU)和物理内存保护单元(PMP)。C908 多核子系统包含:数据一致性接口单元(CIU)、二级高速缓存、主设备接口单元、可配置的 AXI4.0 设备一致性接口(DCP,Device Coherence Port)。平头哥玄铁 CPU IP203)高性能应用处理:C910a)概述玄铁 C910 采用 12 级多发乱序流水线,典型工作频率2.5GHz,是首款实现规模化量产的高性能乱序 RISC-V 处理器。采用 3 发射、8 执行的深度乱序执行架构,针对算术运算、内存访问以及多核同步等方面进行了增强。可以应用在对通用性能要求较高的高性能消费终端、边缘计算等场景。C910 核心的主要特点:b)处理器简介C910MP 结构框图如下图所示。平头哥玄铁 CPU IP21C910 核内子系统主要包含:指令提取单元(IFU)、指令译码单元(IDU)、整型执行单元(IU)、浮点单元(FPU)、存储载入单元(LSU)、指令退休单元(RTU)、虚拟内存管理单元(MMU)和物理内存保护单元(PMP)。C910 多核子系统包含:数据一致性接口单元(CIU)、二级高速缓存、主设备接口单元、可配置的 AXI4.0 设备一致性接口(DCP,Device Coherence Port)、平台级中断控制器(PLIC)、计时器和自定义多核单端口调试框架。平头哥玄铁 CPU IP224)AI 加速引擎:C920a)概述玄铁 C920 采用 12 级多发乱序流水线,典型工作频率2.5GHz,标配单精度浮点单元,并可进一步选配高性能乱序矢量运算单元。同时具备出色的访存能力,支持高性能数据预取技术。可以应用在有高并发算力要求的人工智能、自动驾驶等场景。C920 核心的主要特点:b)处理器简介C920MP 结构框图如下图所示。平头哥玄铁 CPU IP23C920 核内子系统主要包含:指令提取单元(IFU)、指令译码单元(IDU)、整型执行单元(IU)、浮点单元(FPU)、矢量执行单元(VU)、存储载入单元(LSU)、指令退休单元(RTU)、虚拟内存管理单元(MMU)和物理内存保护单元(PMP)。C920 多核子系统包含:数据一致性接口单元(CIU)、二级高速缓存、主设备接口单元、可配置的 AXI4.0 设备一致性接口(DCP,Device Coherence Port)、平台级中断控制器(PLIC)、计时器和自定义多核单端口调试框架。平头哥玄铁 CPU IP244.面向高性能领域 CPU1)高性能应用处理:C910玄铁 C910 采用 12 级多发乱序流水线,典型工作频率2.5GHz,是首款实现规模化量产的高性能乱序 RISC-V 处理器。采用 3 发射、8 执行的深度乱序执行架构,针对算术运算、内存访问以及多核同步等方面进行了增强。可以应用在对通用性能要求较高的高性能消费终端、边缘计算等场景。2)可靠实时增强:R910a)概述玄铁 R910 用 12 级多发乱序流水线,典型工作频率2.5GHz,同时支持 Cache 以及TCM 存储架构,各级片上存储支持校验纠错以提升可靠性,可进一步选配快速外设接口以及一致性外设接口,从而大幅提升系统实时性。可以应用在对实时性及算力有高要求的企业级 SSD,网络通信等场景。R910 核心主要特点:平头哥玄铁 CPU IP25b)处理器简介R910MP 结构框图如下所示。R910 核内子系统主要包含:指令提取单元(IFU)、指令译码单元(IDU)、整型执行单元(IU)、浮点单元(FPU)、存储载入单元(LSU)、指令退休单元(RTU)、虚拟内存管理单元(MMU)和物理内存保护单元(PMP)。R910 多核子系统包含:数据一致性接口单元(CIU)、二级高速缓存、主设备接口单元、可配置的快速外设访问接口(LLP)、可配置的 APB 主设备接口(FPP)、可配置的紧耦合内存访问接口(TCMSP)、可配置的 AXI4.0 设备一致性接口(DCP,Device CoherencePort)、平台级中断控制器(PLIC)、计时器和自定义多核单端口调试框架。平头哥玄铁 CPU IP265.玄铁 CPU 课程学习平头哥芯片开放社区官网上线了 RISC-V 系列课程培训,该课程和清华大学、大连理工大学等合作,包括由教育部评选为“国家级一流本科课程”的嵌入式软件设计,成为国内嵌入式教育的标杆课程。在“中国大学 MOOC”平台已开设 9 轮课程,累计选课人数达四万人次以上,广受学生欢迎。通过 XuanTie RISC-V Institute,可以学习该课程。欢迎广大开发者登录 OCC 了解学习。有关玄铁 CPU 详细介绍内容,也可以登录平头哥芯片开放社区(OCC)查看。无剑平台27无剑平台1.无剑 100 开源 SoC 平台1)概述无剑 100 开源 SoC 平台是围绕玄铁 RISC-V E902 打造的软硬一体的开源 MCU 芯片平台。可用于面向 IoT 设备接入,音视频播放及智慧家居、环境监测、健康医疗等多种应用场景芯片的开发。平台包含芯片开发,剑池 CDK 开发工具,支持 YoC/RTOS 操作系统,同时支持通过 EDA 工具进行前端仿真和制作 FPGA 测试,帮助用户聚焦芯片差异化定制,主打低功耗和安全特性。2)CH2601 芯片CH2601 是业内首颗基于无剑100 开源 SoC设计的通用型 MCU。该芯片基于玄铁E906内核,最高主频 220MHz,支持 AliOS Things,YoC 及 RTOS 操作系统及平头哥剑池开发工具(CDK)。同时含有丰富的存储资源支持多媒体播放,并提供 CSI 驱动接口,让开发更便捷。可广泛应用于 IoT 设备接入,智慧家居,工业控制及健康医疗等场景。芯片框图如下:无剑平台282.无剑 600 SoC 平台1)无剑 600 SoC 平台概述无剑 600 RISC-V 芯片设计平台是平头哥推出的高性能异构芯片设计和软硬件全栈的平台。具有高性能、高内存带宽、异构计算和人工智能加持的特性。兼顾高安全、多模态感知和软硬一体的能力。客户可面向场景定制开发芯片,缩短产品研发周期,降低开发难度。同时,助力更多的芯片资源接入到 RISC-V 生态,推动下游应用。2)曳影 1520 概述曳影 1520 是首颗基于无剑 600 平台研发的量产多模态 AI 处理器 SoC 原型,采用高性能玄铁 RISC-V CPU,支持全链路安全防护,具备全数据通路性能均衡的特点。该原型芯片已通过平头哥 5000+项硬件测试(涵盖:电气特性/高低温/高低压/可靠性等),30000+项软件测试(涵盖:功能/性能/兼容性/功耗/压力测试等),从硬件到软件均已完成了量产应用场景的适配。开发者在等待定制化芯片的同时,可以先在曳影1520 芯片上开发自己的系统,极大地缩短最终产品量产的时间。无剑平台293)曳影 1520 适配不同 OS 平台a)openKylin 社区openKylin(开放麒麟)社区旨在以“共创”为核心,在开源、自愿、平等、协作的基础上,通过开源、开放的方式与企业构建合作伙伴生态体系,共同打造桌面操作系统顶级社区,推动 Linux 开源技术及其软硬件生态繁荣发展。目前,平头哥已与 openKylin 社区合作,完成了曳影 1520 与 openKylin 操作系统的适配工作,并基于社区软件源构建了镜像版本。该版本包含近 1600 个软件包,集成了一系列稳定版本的基础库和图形开发库,能够顺畅运行 UKUI 桌面环境。此外,系统包含丰富的 openKylin 自研软件和第三方开源软件,如浏览器、视频、音频和文档编辑等,可以满足用户的基本使用需求。无剑平台30在 openKylin 操作系统的支持下,平头哥玄铁处理器完成与钉钉的适配。该合作完成了对钉钉 2.7 万个文件、17 个第三方库的编译,同时突破了 Qt(应用程序开发框架)、CEF(ChromiumEmbeddedFramework,Chromium 嵌入式框架)等关键软件框架的兼容性问题,使得钉钉能够顺利在 RISC-V 平稳运行。同时,钉钉成为首个 RISC-V 商用 IM产品。b)统信统信软件是国产操作系统的代表厂商,也是龙蜥社区副理事长单位。旗下拥有桌面、服务器、企业级应用、智能终端等四大产品线,统信桌面操作系统面向不同人群提供社区无剑平台31版(deepin)、家庭版、专业版等细分版本,统信软件是龙蜥社区的主要贡献者,在 2021年 5 月全国首家发行了基于龙蜥社区技术路线的商业服务器操作系统版本。目前统信操作系统国内装机量累积超过 300 万台。2022 年,统信软件与龙蜥社区、平头哥展开合作,成功在曳影 1520 启动了 deepin V23操作系统。流畅运行桌面、办公、影音及开发等关键大型软件,探索 RISC-V 在桌面端的潜力。无剑平台32a)龙蜥社区龙蜥社区成立于 2020 年 9 月,是一个面向国际的操作系统开源社区及创新平台,致力于通过开放的社区合作,构建 Linux 开源发行版及开源创新技术,推动软、硬件及应用生态繁荣发展,共创数字化发展开源新基建。社区理事会成员是由阿里云、统信软件、Arm、Intel 等 21 家国内外头部企业共同组成,有近 300 家合作伙伴参与生态共建,实现了主流芯片协同研发机制全覆盖、主流中间件/数据库全覆盖、主流整机 OEM 厂商全覆盖;100 余家产品与龙蜥操作系统(AnolisOS)完成适配。在无剑 600 平台上,平头哥与龙蜥社区、中科院软件所 PLCT 实验室进行了软硬件全栈的联合优化,完成了 RISC-V 与龙蜥操作系统的 3000 多个基础包适配,并在曳影 1520上首次运行FireFox 浏览器、LibreOffice等大型桌面级软件,以及Hexo和 OpenRocket等基于 NodeJS 和 JAVA 的应用,极大拓展了 RISC-V 的想象力。无剑平台33平头哥 RISC-V 工具链34平头哥 RISC-V 工具链1.RISC-V 工具链简介1)概述“工具链”是英文“toolchain”的翻译,它指辅助开发者完成程序开发、调试、性能分析调优等开发优化行为的一系列工具集合。它一般包含编译器、汇编器、链接器、调试器、模拟器等基础工具,集成开发环境作为一种图形化的综合开发工具也可以被纳入其中。由于指令集和用户编程模型不同,因此每个架构都需要一套完整的、独有的工具链。2)工具链的重要性在计算机发展的早期,几乎没有工具链,科学家通过在程序卡片上打孔来表示不同指令的编码,计算机读取程序卡片的打孔信息执行指令流。随着制造工艺和计算机的发展,现代计算机的指令码存储于 ROM、RAM、Flash 等介质中,把指令码下载到指定的存储空间需要经过复杂的控制流程,因此必须需要借助于程序下载器才能完成下载。为了提升程序开发效率,涌现了众多的高级开发语言。目前 99%以上的开发者都使用高级语言完成业务的开发,然后使用编译器把高级语言翻译成目标机器指令下载到机器中执行。因此编译器成了工具链中一个必不可少的组件。对于现代计算机系统,一套稳定、完整的开发工具链是一个架构的基础,所有软件的运行都依赖工具链;没有工具链,CPU 和硬件无法使用,开发者寸步难行。平头哥 RISC-V 工具链35工具链的关键指标可分为高效性和易用性两个方面。高效性又包括编译高效性、调试高效性、性能分析高效性等,其中编译的高效性尤为重要。通过上文介绍,编译器是用于把高级语言翻译成目标机器指令的软件;一段高级语言会被翻译成若干条机器指令,编译器在保证功能正确的前提下,翻译出的机器指令数量和质量也非常关键,直接影响程序运行所需花费的时间和程序占用空间,即影响了处理器的性能和代码密度表现。因此,处理器性能是硬件+工具链的综合能力体现,单比较硬件频率指标没有实际意义。另外调试高效性直接影响了开发者分析解决问题效率,也是决定了处理器能否开发者接受、是否可以被广泛应用。3)RISC-V 工具链的现状既然工具链这么重要,那么 RISC-V 的工具链现状如何,能否满足当前的应用需求?由于 RISC-V 的开放特性,加上基金会对软件生态的持续运作,吸引了大量的开发者投入到工具链的补充和完善工作上。目前从编译工具(GCC+LLVM)、调试工具到集成开发环境,在基本功能上都已经支持,但在高效性和易用性上仍需要继续加强和提升。如编译得到的程序代码大小相对 ARM 仍然存在不少差距;缺少性能调优工具;缺少图形化平头哥 RISC-V 工具链36实时操作系统调试工具;开源的集成开发环境只支持简单的调试插件等,这些方面都需要工具链开发者不断地进行完善,并通过应用场景的验证和打磨。4)剑池系列工具链剑池系列工具链以开源工具链为基础,根据应用场景和玄铁处理器微架构高度优化的开发工具集合(见下图)。配合玄铁 Turbo 指令集,在 XT906 上相对开源版本平均有 13%的性能提升,在 XT910 上平均有 20%的性能提升。开发了基于指令 Trace 的性能分析工具,配合集成开发环境的图形化界面,为开发者提供快速性能 profiling 和优化的能力。另外,开发了两套集成开发环境,分别面向 MCU 应用开发和通用应用开发,降低现有工程迁移到 RISC-V 架构芯片上的难度。关于剑池系列工具链的每个工具,在后续的文章中会做详细介绍。平头哥 RISC-V 工具链37工具链是一个体系架构的重要且不可缺失的组成部分,它是基础软件的基础。RISC-V工具链经过几年的发展,在功能上已经日渐完善;相信接下来的几年里,经过开源社区开发者和商业公司的共同努力,在编译调试高效性和易用性方面会有明显的提升,RISC-V 的芯片也会被更多的开发者接受,被应用到各种场景。2.剑池 CDK 开发工具1)概述剑池 CDK 是平头哥面向 MCU、工控、IoT 等领域应用提供的专业集成开发环境。它以极简开发为理念,在不改变传统 MCU 应用开发习惯的基础上,全面接入云端开发资源,并结合图形化的 OSTracer、Profiling 等调试分析工具,加速用户产品开发。软件框图如下所示:从功能划分角度分析,剑池 CDK 工具分为以下四部分:Packages:组件化模块。用于支撑剑池 CDK 的组件化开发,为开发者提供一个制作松耦合的软件 SDK 的工具。平头哥 RISC-V 工具链38Editor:编辑器模块。图形化的方式解决嵌入式开发中晦涩、难懂的文本和代码编辑。Debugger:调试器模块。图形化的方式提供芯片调试的查看和控制界面。Analyzer:分析器模块。为开发者开发出更高效的嵌入式程序而提供的工具。平头哥 RISC-V 工具链392)工程创建点击下图平头哥图标进入创建工程主页。平头哥 RISC-V 工具链403)工程编译第一步:点击下载方案,下载过程需要花个几分钟,视网络情况而定。待下载完成之后,就可以开始编译烧录了。平头哥 RISC-V 工具链41第二步:如果这个示例支持多个开发板的话,那么可以通过右键点击红色问号部分进行SDK 的切换。待下载完成之后,就可以开始编译烧录了。平头哥 RISC-V 工具链42平头哥 RISC-V 工具链434)工程烧录编译完成之后就可以烧录到对应的开发板了。烧录之前请确保开发板硬件连接正确。平头哥 RISC-V 工具链443.玄铁 CPU 调试系统1)调试系统基本介绍调试系统是一套基于硬件调试模块,结合软件调试工具,为开发者提供解决软硬件 bug的技术系统。软件调试部分包括调试工具、link 及其固件。硬件调试部分包括调试模块(Debug Module)。例如上图所示,在典型的 MCU 调试系统中:调试工具(Debug Tools)是面向开发者调试的软件工具,一般运行在开发人员的主机、服务器等场景下。常见的调试工具有 GDB、IDE 等,如 T-Head 的 RISC-V 工具链中的gdb,CDK,DebugServer 等工具。开发者可使用这类工具进行软件程序的调试、分析工作。由于调试主机无法直接与 CPU 上的调试单元连接,因此需要 link 作为中间转换工具,使得调试工具的操作能够真实地作用在 CPU 上,比如平头哥的 CkLink,Segger 的 JLink等等。平头哥 RISC-V 工具链45CPU 上的调试模块(Debug Module)是支持大部分调试手段的基础,实现对 CPU 的控制和读写寄存器、读写内存等功能。2)玄铁 CPU 调试系统总览如上图所示,玄铁 CPU 调试系统主要由以下几部分组成:软件运行环境,指软件运行的实际环境,包括模拟器、普通硬件环境(Bare Metal)、基于 Linux 内核的环境;Debug Monitor,主要指配合调试工具,对被调试程序进行调试控制的工具,包括DebugServer/OpenOCD/GDBServer 等。对于实际开发板来说,往往还需要在线仿真调试工具(cable/link),如 CkLink,JLink 等;调试/Profiling 工具,是开发者经常使用的用于调试程序的工具,主要包括 GDB、perf、CPF、Trace、Flash Programmer 等;平头哥 RISC-V 工具链46用户接口,是用户直接接触到的操作界面,主要是命令行工具(CMD Line)、剑池CDK、剑池 CDS 等。其中大部分调试/profiling 工具大部分都支持命令行方式呈现。剑池 CDK、剑池 CDS 相比命令行工具,有友好的界面,具有更好的开发体验。玄铁 CPU 配套有诸多调试工具,本章节将分别介绍几个典型调试工具,如下表所示:DebugServerDebugServer 是平头哥自行设计实现的调试工具。其目的是配合 GDB 完成对 CPU 的软件调试,其中包含一套 GDB Remote Serial Protocol 的实现,并解析该协议,通过 USB操作 link 完成协议的执行。同时 DebugServer 也实现了一套 CLI,完成一些简单的调试功能,如复位、指令单步,读写寄存器、读写内存等。调试工具描述DebugServer是一种Debug Monitor软件,用于和玄铁CPU的调试模块进行交互,完成调试操作。GDB开源 GDB 软件,支持玄铁 CPU 体系结构,包括玄铁 8 系列、9 系列CPU剑池 CDK平头哥推出的玄铁 CPU 集成开发环境PerfPerf 是 Linux 上强大的性能分析工具集合。结合 PMU 事件可对程序热点采样,cycle、指令数统计等。CPFT-Head 研发的性能分析工具,能真实反映 CPU 的运行轨迹(目前仅在 T-Head qemu 上支持)平头哥 RISC-V 工具链47GDBGDB 是一个软件调试工具,是 GNU 组织维护的开源软件:https:/www.gnu.org/software/gdb/。GDB 支持不同的后端体系架构,目前 GDB 的发布的源码版本中已经支持玄铁 8 系列、9 系列 CPU。能够满足玄铁 CPU 的日常开发需求。通过一段简单示例看一下 GDB 使用。平头哥 RISC-V 工具链48GDB 详细手册参考:https:/www.gnu.org/software/gdb/documentation/剑池 CDK剑池 CDK 是玄铁 CPU 的开发环境,集成了编辑、编译、调试等功能,便于开发者使用。本章节简要介绍以下 CDK 的调试功能,如下图所示:平头哥 RISC-V 工具链49CPFCPF(C-SKY Profiling analysis utils)是一套针对玄铁 CPU 应用程序的性能分析工具,包含了一系列记录和分析的工具。CPF 基于 T-Head trace(目前仅 T-Head qemu 支持 T-Head trace 功能)进行分析,通过 T-Head trace 硬件能够非侵入式地获取 CPU运行时的信息,真实反映 CPU 的运行轨迹。借助于 CPF,开发者可以提高开发效率,优化系统设计。平头哥 RISC-V 工具链50这是一个 HelloWorld 的打印输出示例程序,通过 CPF 工具,可以直观地看出该程序各函数在执行工程中的耗时占比,除此之外,还能看到程序执行的 cycle 数、指令数,被调用的次数等。PERFPerf 是一系列强大的性能分析工具集合。在 Linux 2.6.31 版本引入,至今 tool/perf目录拥有 1 万多个提交,是内核开发中最活跃的几个领
展开阅读全文