我正在编写一个带有32kbyte 8路组关联L2指令高速缓存的嵌入式powerpc 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个字节.我也愿意探索以一种方式放置一组选定函数的全新技术,这样它们就不会映射到相同的缓存行.链接器脚本可以执行此操作吗?