CPU架构在什么级别偏向于程序运行时?

paI*_*ase 5 c procedural-programming concurrent-programming rust

作为一名经常靠近硬件工作的电气工程师(编写C),我一直对从任何给定的计算机体系结构中提取最大性能感兴趣.我一直对竞争架构性能分析感兴趣.

我有兴趣猜测是否有必要进行轻度到中度的更改,例如分支预测实现或CPU上的高速缓存大小,这些可能在像Rust这样的并发运行时比在C等过程运行时更高效.分支预测是在分析程序代码的研究论文中得出的概括上实现的.我想知道并发抽象是否会为运行时添加一个重要的工作集,从而对现有的预测算法产生负面影响.例如,在for循环中进行预测是一回事,但是当分支的目标始终是内存的一些新部分(图形,文本等)时,它将始终是缓存未命中,并且永远不会有分支它的历史 - 因为它们都没有碰过它.

这可能是一个愚蠢的问题,因为内容虽然可能总是在RAM中,但会分支到比它使用的数量级更少(一旦它被加载到缓存中)......但仍然存在应该是存储在过程运行时的高速缓存和分支预测变量中的上下文的可观察时间边界,它将在更加并行化的环境中表现为抽象边界.

-

所以我想知道......

是否遵守了这些界限?

哪些研究论文对此进行了分析?

CPU架构是否足够通用,以至于高度并发的语言不会遇到现代CPU架构中可能存在的固有程序偏差?