Louvre:基于版本化的轻量级释放一致性排序机制
硬件体系结构
2017-12-07 v3
摘要
栅栏指令是确保弱一致共享内存多核处理器中一致性的基本原语。这些指令的执行代价显著,并为并行程序增添了不小的开销。在朴素架构实现中,我们通过栅栏在重排序缓冲中的表项来跟踪其施加的排序约束,其执行开销包括停滞处理器流水线直至存储缓冲区排空,以及保守地使投机加载失效。这些动作对程序中后续指令的执行产生递增的开销级联效应。我们发现这些动作过于严格,可进一步放宽以允许激进优化。当前工作提出一种轻量级机制,当加载与存储指令驻留于加载/存储队列和写缓冲中时,为其分配称为版本的排序标签。分配给内存访问的版本使我们能充分利用弱一致性模型所允许的放宽,并以满足模型排序约束的方式限制其执行。我们利用所分配版本捕获的信息,减少因等待存储缓冲区排空而导致的停滞,并避免不必要的投机加载冲刷,从而最小化重执行惩罚。该方法对采用单向栅栏指令的释放一致性模型尤为有效。我们表明,相较基线实现,该机制将排序指令延迟降低39.6%,并平均提升程序性能11%。
引用
@article{arxiv.1710.10746,
title = {Louvre: Lightweight Ordering Using Versioning for Release Consistency},
author = {Pranith Kumar and Prasun Gera and Hyojong Kim and Hyesoon Kim},
journal= {arXiv preprint arXiv:1710.10746},
year = {2017}
}