假设: (1)以大WORD数组编写的程序。 (2)该数组适合存储页面。 (3)以有利于分支预测的方式编写控制循环。 (4)该程序在面向台式机(即通用架构)的大众市场CPU上运行。
问题: (1)空间距离对写重要吗? (2)在靠近写入的地方进行读取是否更有效率?反之亦然?
答案 0 :(得分:1)
(1)空间距离对写重要吗?
很有可能,是的。通常,对于写操作,CPU必须获取整个缓存行(与读取时相同),然后修改缓存行的一小部分。
也不要忘记,通常会进行某种“虚拟地址->物理地址”翻译,这些翻译可能会被缓存(例如,使用TLB /翻译后备缓冲区),以及随后的访问(对同一页面的任何类型(读或写)都将回收先前获取的翻译。
(2)在靠近写入的地方进行读取是否更有效,反之亦然?
很有可能,是的。与上述相同。