我读过一篇2006年的文章,关于CPU如何在整个l1缓存行上进行操作,即使在你只需要用l1行包含的一小部分内容做的事情的情况下(例如,加载整个l1行来写入布尔值)变量显然是矫枉过正的).本文通过以l1缓存友好的方式管理内存来鼓励优化.
假设我有两个int恰好在内存中连续的变量,在我的代码中,我连续写入两个变量.
硬件是否将我的两个代码操作合并到单个l1行上的一个物理操作中(授予CPU具有足以容纳两个变量的l1高速缓存行),或者不是?
有没有办法在C++或C中向CPU提出这样的建议?
如果硬件没有以任何方式进行整合,那么如果在代码中实现这样的东西,你认为它可以产生更好的性能吗?分配一个大小为l1行的内存块并用尽可能多的热数据变量填充它?