9、利用运行时自适应解决缓存行窃取问题

利用运行时自适应解决缓存行窃取问题

1. 缓存行窃取数据量计算难题

计算被窃取的数据量并非易事。在基于硬件的预取机制中,供应商不一定会给出预取距离。而在软件环境下,如果能直接访问数组,计算则相对容易。

2. 实验设置
  • 硬件环境 :采用Xeon(2.0 Ghz)Core 2系统,共有4个核心(2×2核心),由两个双核处理器共享2GB主内存。L1D缓存(32 KB)为每个核心私有,L2缓存(统一,同时存储指令和数据)由每组2个核心(相邻核心)共享,大小为4MB。Core 2核心是乱序、超标量处理器,支持SIMD指令(SSE)。两级缓存都内置了能够分析内存地址流并触发预取的硬件预取器(DPL),还具备“相邻缓存行预取”机制,会系统地预取正在获取的缓存行之后的那一行。
  • 软件工具 :使用Intel的C编译器(icc v11.1)作为参考编译器。主要通过RDTSC指令精确计算已用周期数,同时使用Intel的性能调优工具(PTU)测量周期和指令计数。利用icc的OpenMP特性实现实验中的并行化。
  • 实验方法 :每个内核先运行一次,将数据放入缓存层次结构,然后运行2000次并取平均值(针对周期计数),每次运行重复100次,选取最低的平均结果(以周期计),即保留最佳性能,以确保实验中因操作系统等因素产生的噪声最小。此外,重复循环还有一个有趣的副作用:如果数组足够小,能放入特定缓存级别(如L2),第一次迭代会将数组初始加载到L2缓存中,后续迭代则可直接在L2中找到它们。所有数组都按页边界对齐。由于数据能放入缓存且进行了足够
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值