作为一名经常靠近硬件工作的电气工程师(编写C),我一直对从任何给定的计算机体系结构中提取最大性能感兴趣。我一直对竞争架构性能分析感兴趣。
我对的猜测感兴趣,如果在诸如分支预测实现或CPU上的缓存大小等事情上有必要进行轻度到中度的更改,那么在并发运行时中可能会更加高效Rust,比如C 等程序性的。分支预测是在分析程序代码的研究论文中得出的概括上实现的。我想知道并发抽象是否会为运行时添加一个重要的工作集,从而对现有的预测算法产生负面影响。例如,在for循环中进行预测是一回事,但是当分支的目标总是存储器的一些新部分(图形,文本等)时,它始终是缓存未命中,并且在那里“永远不会成为它的分支历史 - 因为它们都没有碰过它。
这可能是一个愚蠢的问题,因为内容虽然可能总是在RAM中,但会被分支到比使用它更少的数量级(一旦它被加载到缓存)...但是,应该存在一个可观察的时间边界,用于存储在缓存中的上下文和过程运行时中的分支预测变量,这将在更加并行化的环境中显示为抽象边界。 / strong>
-
所以我想知道......
是否已遵守这些界限?
哪些研究论文对此进行了分析?
CPU架构是否足够通用,以至于高度并发的语言不会遇到现代CPU架构中可能存在的固有程序偏差?