19、嵌入式系统中的函数内联与闪存性能优化

嵌入式系统中的函数内联与闪存性能优化

嵌入式系统函数内联

在嵌入式系统中,由于内存空间有限,程序代码大小和系统性能之间需要进行精细的权衡。传统的函数内联算法,如 OptinlineVector 算法,虽然能找到函数内联的最优解,但所需的时间和内存空间巨大,其最坏情况复杂度与程序中函数的总数 N 呈指数关系。

为了解决这个问题,提出了一种新的函数内联方法,该方法在源代码级别工作,最坏情况下所需的时间和内存空间为 N 的立方。

系统模型

在普通系统中,性能提升是主要目标,函数内联带来的代码膨胀问题往往不被重视。但在嵌入式处理器中,代码膨胀成为一个严重的问题,过大的代码是不可容忍的。因此,需要有选择地进行函数内联。

为了实现有选择的内联,引入了一个概念——rebate_ratio,其定义为:
[
rebate_ratio = \frac{function_calling_frequency}{code_size_increased}
]

函数调用频率与性能提升成正比,而代码大小膨胀则相反。在某些情况下,代码大小增加量可能为零,此时将该函数的 rebate_ratio 设为最大值,并优先进行内联。

对于给定的 C 程序,使用图 G=(V,E) 来表示其内部的函数调用结构。每个节点 $v_i$ 代表一个函数 $f_i$,每条边 $e=(v_i,v_j) \in E$ 表示函数 $f_i$ 调用 $f_j$。每个节点 $v_i$ 有一个二元组属性 $v_i: (B_i, R_i)$,其中 $B_i$ 表示函数 $f_i$ 的实际大小,$R_i$ 是函数 $f_i$ 的 rebat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值