网易首页 > 网易号 > 正文 申请入驻

一文看懂RISC-V代码密度

0
分享至

关键词:RISC-V处理器 ,平头哥玄铁CPU,RISC-V指令集,IoT芯片,RISC-V指令集,代码密度,MCU

对于内存受限的嵌入式芯片(包括MCU和成本要求的AP类芯片)来说,代码密度非常重要。同样功能的程序,如果代码密度过大,就可能导致因ROM空间装载不下而无法使用。所在,在嵌入式领域中,代码密度是最重要的指标之一。那么,代码密度由什么决定?如何提高代码密度呢?RISC-V的代码密度现状又如何?

代码密度的决定因素

如上面的倒金字塔所示,代码密度主要由指令集、ABI、编译器、Runtime库、程序代码五个部分决定。处在金字塔的越底端,说明该因素的越底层,更新的频率越小,但辐射和影响的范围却越广。

指令集

指令集是代码密度最根本的决定性因素,它决定了一个操作在最优的情况下需要编译成多少位宽的编码。

很多体系结构比如ARM、RISC-V、C-SKY都是16位指令、32位指令混编的,同样的一条指令,如果能够被编译成16位指令,那么它显然比编译成32位指令占用更小的空间;再比如,一个乘累加的操作,如果指令集中存在乘累加指令,那么它只需要一条指令来实现乘累加操作,如果没有则需要至少两条指令来完成相同的操作,假设指令都是32位的,显然一条指令将占用更少的空间。

由于指令集的编码空间是有限的,所以指令集设计的核心是将哪些指令(包括指令操作数的范围)放到编码空间当中,就像一个商场的店面是有限的,当我们把需求最广的商家引进来时,商场的销量就会达到最高。

ABI

ABI的全称是Application Binary Interface,是二进制级别的协议,它指导着编译器如何生成代码和二进制程序,同样也指导着用户如何写汇编代码。它主要包含函数调用约定(calling convention)、数据的对齐方式等内容。

其中对代码密度影响最大的就是函数调用约定,它规定了堆栈寄存器、链接寄存器、哪些寄存器需要在函数头尾保存和恢复、哪些寄存器可以作为参数寄存器等,还有一些特殊用途的寄存器。大部分特殊寄存器都是会被高频使用的,配合指令集设计可以降低代码密度;需要保存和恢复的寄存器个数同样也会影响代码密度。

编译器

编译器是开发者最直接接触的工具,也是给开发者体感最强的代码密度影响因素。它对代码密度的影响主要体现在两方面:

l 编译器本身的优化能力,优化能力的强弱是影响编译器产品竞争力的最主要的因素。

l 编译器的使用方法,比如GCC,除了添加-Os之外,还可以添加-ffunction-sections -fdata-sections-Wl,--gc-sections来删除没有用到的函数。

Runtime库

Runtime库是指程序运行所需的一些基本的函数库,它们一般都是预先编译好,和编译器一起打包发布,是工具链的一部分。由于这些函数的使用频率较高,一般程序都会用到一部分Runtime库的函数,对这些函数做针对性地优化会有比较好的收益。

程序代码

开发者书写的代码质量也会影响程序的代码密度,虽然编译器能够优化一部分冗余代码,但是并不能保证百分之百的优化,所以开发者也要注意代码的质量。

RISC-V架构的代码密度现状

RISC-V的代码密度表现一直被人诟病,那么,它的现状真的这么不值一提吗?

首先,RISC-V对代码密度做过一些专门的优化。在指令集方面,它通过量化分析的方法测试了spec等benchmark,找到高频指令并将它们放到16位指令的编码当中,这就是目前的compress指令集;在ABI方面,rv32e通过限制16个寄存器,使代码可以生产更多的16位指令;在编译器和Runtime中,它支持-msave-restore功能通过库函数调用的方式弥补了由于没有push/pop指令造成的一部分代码密度损失。这里需要特别指出的是,RISC-V的链接器做了较多的relax优化,即某些指令的目标符号距离比较接近的时候,可以优化使用更少的指令。比如函数跳转,比如具体在4k之内,可以使用一条jalr指令实现,而如果超过4k的话,则需要auipc+jalr或者lui+jalr两条指令实现。一般在未链接的object文件中,预留的都是指令条数最多的形式,链接之后很大一部分将被优化。如果测试的benchmark如果统计的是object文件,比如CSiBE,那么结果会比实际的要差一些。

那么,在做了这些优化之后,为什么RISC-V的代码密度还是被这么多人诟病呢?主要是由于compress指令集设计时,基于的benchmark是spec2006,它在应用PC端非常具有代表性,但在嵌入式领域却不具有典型性。所以在RISC-V 64位核中,它的代码密度表现还不错,但是在真正关心代码密度的嵌入式领域表现却不尽如人意。其次,ABI也需要重新针对嵌入式领域做量化评估和设计。

平头哥对RISC-V的代码密度优化

针对代码密度,RISC-V社区目前也在不断地优化中,比如code-size TG和EABI TG的成立。平头哥也参与其中,在优化代码密度的道路上不断前行。目前,平头哥所做的优化有如下两个方面:

Runtime库

平头哥设计开发了一套针对嵌入式领域的、最大化优化代码密度的Lower-Level Runtime Library。目前玄铁E902、玄铁E906和玄铁E907均已支持该Runtime库,它相对于libgcc提升40%;相对于Arm的macrolib,玄铁E902与M0-plus相当,玄铁E906、玄铁E907与M4相当。

ABI

目前,社区正在设计、制定针对嵌入式领域的新的ABI——EABI(EmbeddedABI),它不仅会调整Calling Convention以减少中断延迟,也会考虑代码密度,使用量化分析地方法设计出一套对嵌入式领域优化的ABI。平头哥作为EABI Task Group的Co-Chair,也参与其中推动EABI的前进。

作为平头哥玄铁系列科普文章之一,以上是本文关于RISC-V代码密度的介绍及平头哥在其中的优化成果的简介,更多关于RISC-V指令集优劣势分析等内容可参见后续文章。

本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/space?channelName=1 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
脑子一抽能干出哪些奇葩事?网友:烧水站在旁边等,等半天一掀锅盖没加水

脑子一抽能干出哪些奇葩事?网友:烧水站在旁边等,等半天一掀锅盖没加水

解读热点事件
2026-07-15 00:05:08
王室专家曝哈里梅根与查尔斯重聚“并不全是温情”,4年来首次全家相见却提前离场

王室专家曝哈里梅根与查尔斯重聚“并不全是温情”,4年来首次全家相见却提前离场

浅遇时光
2026-07-19 01:11:41
为什么总要呼吸刺痛才想起保护地球生态

为什么总要呼吸刺痛才想起保护地球生态

烽火瞭望者
2026-07-19 06:13:04
马斯克有句话点醒过我“如果今天我破产了,绝对不会去找工作,而是去做一件能快速产生现金流,并且可以复制放大的事。”

马斯克有句话点醒过我“如果今天我破产了,绝对不会去找工作,而是去做一件能快速产生现金流,并且可以复制放大的事。”

LULU生活家
2026-07-07 20:59:47
2026年世界杯一分钟未上:坎特对德尚的反应令人动容

2026年世界杯一分钟未上:坎特对德尚的反应令人动容

星耀国际足坛
2026-07-19 19:13:21
2026第一批高考捡漏王!487分被985大学录取,551分拿下双一流!

2026第一批高考捡漏王!487分被985大学录取,551分拿下双一流!

户外阿毽
2026-07-18 13:03:34
《焦点访谈》批评湖南“纸上种稻”,为何没引来批评反倒大片求情

《焦点访谈》批评湖南“纸上种稻”,为何没引来批评反倒大片求情

三农雷哥
2026-07-18 17:45:48
大局已定!10年4亿人大迁徙,中国城市重新洗牌,普通人抓紧保财

大局已定!10年4亿人大迁徙,中国城市重新洗牌,普通人抓紧保财

趣味萌宠的日常
2026-07-20 00:54:22
“法国英格兰 诚信互刷”冲上热搜,姆巴佩回应赛场表现:理解有人觉得我们上半场表现得像是在开玩笑,愿用最佳射手去换参加决赛

“法国英格兰 诚信互刷”冲上热搜,姆巴佩回应赛场表现:理解有人觉得我们上半场表现得像是在开玩笑,愿用最佳射手去换参加决赛

极目新闻
2026-07-19 09:06:23
被当成情色片10年,这部评分7.9的科幻神作,9成观众根本没看完整

被当成情色片10年,这部评分7.9的科幻神作,9成观众根本没看完整

宇宙来信发
2026-07-17 19:06:37
张凌赫新剧口碑崩塌,S+长剧拍出短剧味,AI滥用太敷衍

张凌赫新剧口碑崩塌,S+长剧拍出短剧味,AI滥用太敷衍

影视地平线
2026-07-19 15:09:02
月之暗面Kimi:算力紧缺,即日起暂停C端新用户订阅

月之暗面Kimi:算力紧缺,即日起暂停C端新用户订阅

DoNews
2026-07-19 23:11:12
劳塔罗社媒晒照鼓励阿根廷队友:一起为同一个目标努力

劳塔罗社媒晒照鼓励阿根廷队友:一起为同一个目标努力

懂球帝
2026-07-19 09:38:17
为什么美国要为经济开发牺牲生态保护?

为什么美国要为经济开发牺牲生态保护?

烽火瞭望者
2026-07-19 06:20:59
朱元璋要斩76岁的李善长,李善长问道:臣都快80岁了,还能活几年

朱元璋要斩76岁的李善长,李善长问道:臣都快80岁了,还能活几年

小豫讲故事
2026-07-19 06:00:12
首例5胞胎长大了,父亲已劳累去世,母亲直言:如能重来一个也不要

首例5胞胎长大了,父亲已劳累去世,母亲直言:如能重来一个也不要

柳絮忆史
2025-07-22 07:15:03
一锅端?总经理+主帅+助教均挖自同一球队,CBA劲旅被批不厚道

一锅端?总经理+主帅+助教均挖自同一球队,CBA劲旅被批不厚道

萌兰聊个球
2026-07-19 13:37:03
凯恩73球8助攻!可也远不如82球34助攻、历史第一的梅西!

凯恩73球8助攻!可也远不如82球34助攻、历史第一的梅西!

历史第一人梅西
2026-07-19 21:23:37
和孙楠离婚真相大白,潘蔚近况曝光,难怪离开北京甘愿住农村大院

和孙楠离婚真相大白,潘蔚近况曝光,难怪离开北京甘愿住农村大院

大眼妹妹
2026-07-19 16:06:39
难怪周星驰新片破8亿被骂,陪睡陪玩仅冰山一角,热巴早就遭殃了

难怪周星驰新片破8亿被骂,陪睡陪玩仅冰山一角,热巴早就遭殃了

星星没有你亮
2026-07-17 08:17:06
2026-07-20 03:08:49
未来开发者
未来开发者
分享嵌入式开发实战经验
19文章数 29关注度
往期回顾 全部

科技要闻

Kimi K3单项登顶 整体落后前沿模型2-3个月

头条要闻

网友称草原有人驱赶分食马匹尸体的秃鹫 官方回应

头条要闻

网友称草原有人驱赶分食马匹尸体的秃鹫 官方回应

体育要闻

世界杯决赛,从“澡盆德比”500年前讲起

娱乐要闻

王侃因病逝世 两年前与父亲牛犇同台

财经要闻

任泽平VIP会员自称爆仓巨亏千万

汽车要闻

被追尾还能自动加速逃生?华为乾崑智驾ADS 5.0 OTA时间表发布,只有这台车不用等!

态度原创

健康
游戏
时尚
旅游
数码

刮痧也会刮出脑梗?讲个真实案例

BLG输DK全队气氛爆炸,知情人爆料战队签约新上单,Bin丢掉首发?

除了机车包,Balenciaga的服装才是真正顶流

旅游要闻

走一趟镇安龙潭才懂,保山人的烟火与康养,全藏在这两汪水里!

数码要闻

AMD Zen6处理器跑分还再涨!同核心提升达35%

无障碍浏览 进入关怀版