gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:38:36 24 4
gpt4 key购买 nike

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

void high_freq1(void)
{
...
}

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

void high_freq2(void)
{
...
}

这让我觉得丑陋且次优。我想做的是

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

我也愿意探索全新的技术,以某种方式放置一组选定的函数,这样它们就不会映射到相同的缓存行。链接描述文件可以做到这一点吗?

最佳答案

使用 GCC 的 __attribute__(( aligned(size) ))

或者,在您的 GCC 命令行上传递 -falign-functions=n

关于在文本段中创建具有给定大小的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com