相关疑难解决方法(0)

在文本段中创建具有给定大小的C函数

我正在编写一个带有32kbyte 8路组关联L2指令高速缓存的嵌入式 32系统.为了避免高速缓存抖动,我们以一种方式对齐函数,使得以高频率调用的一组函数的文本(想想中断代码)最终在单独的高速缓存集中.我们通过根据需要插入虚函数来实现这一点,例如

void high_freq1(void)
{
   ...
}

void dummy(void)
{
   __asm__(/* Silly opcodes to fill ~100 to ~1000 bytes of text segment */);
}

void high_freq2(void)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

这让我感到丑陋和不理想.我想做的是

  • __asm__完全避免使用纯C89(可能是C99)
  • 找到一种方法来创建dummy()GCC优化器不接触的所需间隔
  • dummy()spacer 的大小应该可以配置为4个字节的倍数.典型的间隔物为260至1000个字节.
  • 对于总共500个函数中的约50个函数,应该是可行的

我也愿意探索以一种方式放置一组选定函数的全新技术,这样它们就不会映射到相同的缓存行.链接器脚本可以执行此操作吗?

c gcc powerpc memory-alignment

13
推荐指数
1
解决办法
879
查看次数

标签 统计

c ×1

gcc ×1

memory-alignment ×1

powerpc ×1