我在我们的程序上运行ocount以计算L2缓存读取事件,我们得到以下结果:
Event Count % time
counted
l2_rqsts:all_demand_data_rd 14,418,959,276 80.01
l2_rqsts:demand_data_rd_hit 6,297,000,387 80.00
l2_rqsts:demand_data_rd_miss 6,104,577,343 80.00
l2_rqsts:l2_pf_hit 667,709,870 80.01
l2_rqsts:l2_pf_miss 1,641,991,158 79.99
但是我们不知道这些结果是否应被视为总缓存垃圾邮件。
您认为L2缓存的良好比率命中/未命中率是多少?
我希望它在很大程度上取决于CPU架构和应用程序要求,但是它有一个普遍允许的价值吗?
答案 0 :(得分:4)
这取决于应用程序。极端情况:
我怀疑是否有任何关于分析模型的工作来预测您可能会看到哪种类型的值以获得更实际的工作负载,但肯定有一些配置文件在常见基准测试上运行。例如:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.152.3943&rep=rep1&type=pdf。这些人在SPECcpu2000的mcf
工作负载上显示每千条指令(MPKI)的20到50个未命中率。这是对工作量的描述:https://www.spec.org/cpu2000/CINT2000/181.mcf/docs/181.mcf.html。它可能会或可能不会像您对优化感兴趣的内存子系统一样。
回到你可能首先提出这个问题的原因:如果其他分析数据显示你对缓存或内存访问的约束比算术,锁定等更多,那么你可能会选择一些启发式值,如果您的命中率达到80%或95%,则可能值得尝试优化缓存访问。