百科问答小站 logo
百科问答小站 font logo



函数调用带来的 cache miss 会对 cpu 性能带来多大的影响? 第1页

  

user avatar   Ultraman-Tiga 网友的相关建议: 
      

【update:原答案写于7年前,现在根据自己接触过的相关工作和数据重新更新。】

泻药,这是非常好的一个问题,同时也是比较前沿的。

题目描述中的这个现象确实存在,已经有不少实测证明了,在服务器workloads上,现在的L1 instruction miss率是比较差劲的,会导致20%-40%的性能损失在front-end上。

instrcuction miss比较特殊,是乱序执行没办法掩盖的。乱序执行要调度不相干指令上来掩盖数据访问延迟,但是如果指令都取不上来也只能干瞪眼了。

分条回答:

1. 是的,但这个非常取决于workload。我接触过的真实服务器workloads,在front-end上的性能损失会达到SPECCPU的几倍。

2. 假设一个完全不miss的L1 Intruction Cache,性能在有的benchmark上可以提高10%~50%

3. 不清楚,未见相关实测数据。

4. 解决方案有两种:

一种是编译优化时调整代码布局,这一个方向我没有跟进过不敢多说,

另一个方向是由微结构负责从已经产生的miss中推断未来miss的位置,提前预取。Umich在这个方向有一系列不错的工作,但是他们的解决方案在开销方面可能存有疑虑,以及对stack上的信息有一些隐含假设,不一定对各种服务器workloads都成立,这个方向我还会继续跟进。




  

相关话题

  将近十年后,如何评价AMD收购ATi? 
  既然每个程序占用的内存都是操作系统管理的,为什么内存泄漏还是个问题? 
  面对很乱的代码,你会慢慢看,慢慢改,还是重写? 
  cpu对于内存的读写会受制于内存延迟,处理逻辑更类似于web的阻塞模型还是异步模型? 
  ps3的cpu算力真的比ps4 xboxone还强? 
  如果未来英特尔不再为大陆提供服务,对中国发展有何影响? 
  现在高端笔记本电脑的CPU真的性能过剩吗? 
  数组随机存取的时间效率会受到什么因素影响? 
  计算机专业 CPU 应该用 AMD 还是 Intel? 
  A11处理器有55亿个晶体管,假如一秒钟设计一个晶体管,那也需要十几年,工程师如何设计这么多晶体管? 

前一个讨论
经常上知乎会带来什么错觉?
下一个讨论
有些中国人为什么不愿意买商业保险?





© 2025-01-30 - tinynew.org. All Rights Reserved.
© 2025-01-30 - tinynew.org. 保留所有权利