芯片上的硬件一致性可以随着内核数量的增加而优雅地扩展。
以下信件发表于2012年9月的中国计算机学会《致编辑的信》(//www.eqigeno.com/magazines/2012/9/154585)。
——CACM管理员
为了理解为什么Milo M.K. Martin等人(2012年7月)的“为什么片上缓存一致性是存在的”的关键假设,即片上多核架构要求本地缓存可能是有问题的,考虑以下处理器将写入并行程序中的共享变量的例子:
例1。没有其他处理器寻求读取或写入变量,在这种情况下,将变量复制到处理器本地的位置(寄存器或草稿板),根据需要访问它,然后将其存储回共享位置或变量中几乎没有什么危害;而且
例2。其他处理器需要读取和/或写入该变量。
本文中比较的两种本地缓存情况,无论是否具有缓存一致性,都需要相当大的流量来确保对变量的一致访问。但是,如果并行程序中的所有写更新都使用前缀和或其他事务内存类型的指令执行到共享位置,那么流量与所有处理器对该变量的实际访问数量成正比。这种执行写更新的方式比Martin等人所提倡的自动缓存一致性(每次访问都需要更广泛的通知)有了显著的改进。
总的来说,Martin等人在文章中提出的用于并行片上计算的大型私有缓存的赌注尚未证明自己是硅资源的良好分配;例如,在一个1000核的设计中,每个私有缓存中多一个字可能意味着共享缓存中少1000个字——从编程的便捷性和整体性能来看,这并不一定是一件好事。
我自己最近在马里兰大学的研究(1)(2)表明,传统上对私有缓存的强调可能是目前多核编程对大多数程序员来说仍然过于困难的主要原因。虽然代码向后兼容性对于串行代码来说很有说服力,但并行编程的难度,特别是局部性,仍然是阻碍采用多核的最大障碍。
乌兹冲锋枪Vishkin
马里兰大学帕克分校
参考文献
(1) Vishkin, U.混合串行和并行计算机的计算机内存结构方法;美国专利7,707,388和8,145,879。
(2) Vishkin, U.使用简单的抽象来重新发明并行计算。Commun。中国机械工程学报44,1(2011年1月),7585。
显示1评论