您的位置:首页 > 其它

基于4*4Torus结构的一级Cache的一致性协议的提案

2014-02-02 16:59 369 查看
摘要:在带有一级Cache的多处理器系统中,由于不同处理器Cache对内存存储块的共享会产生一致性问题,并且随着多核处理器规模扩大愈加复杂,因此设计有效且高效一级Cache的一致性协议是很重要的。本文借鉴Token的思想,对目录表法加以改动提出了一种基于4*4Torus结构的Cache一致性协议。

1.引言

在共享内存的多处理器系统中,Cache结构可以将共享存储空间的数据缓存在本地,加速处理器获取数据的过程,但是由此也会带来严重的数据不一致现象。为了保证多处理器并行工作的正确性,高效的Cache一致性协议是必须的。

目前在多处理器系统中,较为典型的Cache一致性协议主要有监听法、目录表发、Token协议和Hammer协议[1]。这四种协议在不同情况下各有不同的优势,同时也存在比较明显的缺陷。因此,研究人员在此基础上提出了多种改进型协议。

2.Cache一致性协议概述

监听法通过共享总线向片内所有处理器进行消息广播,并需要时刻监听总线事务来更新本地数据的一致性状态,较为通用的有MESI和MOESI协议。但是监听法依赖于总线的完全顺序性,在处理器单元数较多时总线争用较为严重,且无法直接应用于无序互联结构,如Torus结构;且请求时需要向全体处理器单元广播消息,导致总线上通信量较大。

目录协议对共享存储器中的数据块设置目录项以跟踪、记录其状态信息,只需对需要的节点进行点对点通信而不需要广播消息。根据目录项的位置,可以分为集中式目录表法(Tang方法)和分散式目录表法[2,3]。依据目录项存储内容,可以分为全映射法、有限目录法和链式目录法。目录表法会增大Cache缺失延迟,并额外占用存储空间。有研究人员提出了一种使用两级目录的Cache一致性协议以减少额外存储[4,5],但在4*4Torus网中,使用两级目录并不能减少目录项占用的存储空间。

Token协议将一致性协议分为正确性框架和性能策略两层。正确性框架中的Token计数策略通过令牌的持有保证执行的安全性,持续性请求避免现象的发生。而在性能策略层可以选择高性能的协议来提升效率[6]。

3. 系统结构和基本思想说明

本文基于4*4的Torus结构,借鉴Token的计数机制,对分散的全映射的目录表法的做了一些变动,提出了一种Cache一致性协议。

本文所提出的Cache一致性协议所适用的多处理器系统结构如图2-1所示:使用4*4Torus结构作为互连结构连接16个处理器单元,每个处理器单元包含相连的处理器内核、一级Cache和通信接口。同时,互连结构与分散共享的内存(具有一致的地址空间)相连,该内存即为Home Memory。



图2-1
同时,需要对内存数据存储方式进行改动,为数据块添加特定标记位,具体见图2-2。数据块的前两bit用作状态标签,有00、01、10三种状态。接下来16bit用于存储对应16个处理器Cache的共享信息,如果对应的Cache保存有可用副本则设置为1,否则设置为0。最后在数据区存放数据。



图2-2
之所以使用全映射目录而不是采用有限目录或者链式目录,因为对于16个处理器的系统,有限目录法和链式目录都无法减少目录项所额外消耗的内存空间,同时全映射法又可以很好的找到对应的Cache。且使用分散共享的Memory和分散式目录项可以有效减少目录查询所造成的时间延迟。

4、协议内容详述

协议共使用三种状态:

Invalid(00):该数据块不可用;

Owner(01):该数据块是系统中唯一一个可用数据块,其他副本皆不可用,且与内存中数据不一致。

Share(10):该数据块可用且系统中可能存在与该数据块相同的可用副本,且与内存中的数据一致。

在内存中,每个数据块标志位初始值为10(Share),且只可能存在Share和Invalid两种状态。

当本地CPU写时,如果Cache未命中,或者命中后数据块标志位为Invalid,则向Home Memory发出写请求。Home接收到写请求后,查找该数据块的标志位。如果该数据块的状态为Share,则直接向请求CPU返回数据、共享副本的数量值(Num),然后向其他共享者发送无效化消息,其他Cache将各自的副本置无效化后向请求者发送ACK,当请求者接受到Num个ACK后,将数据块的状态置为Owner,开始进行写操作。具体流程可见图3-1。如果该数据块的状态为Invalid,则检查目录项,向拥有者转发写请求信息,之后Owner将所有权转移给请求者。具体流程可见图3-2。如果Cache命中且状态为Owner,直接进行写操作即可。如果Cache命中,且状态为Share,则检查目录项,向其他所有共享者以及Home
Memory发送无效化信息,获得ACK之后置为Owner状态,之后进行写操作,具体流程可见图3-3。



图3-1



图3-2



图3-3
当本地CPU读时,如果Cache未命中,或者命中后标志位为Invalid,则向HomeMemory发出读请求。Home接收到读请求后,查找该数据块的标志位。如果该数据块的状态为Share,则直接向请求者返回数据,置请求者状态为Owner,开始进行写操作,同时向其他共享者发送新共享消息以修改目录项。具体流程可见图3-4。如果该数据块的状态为Invalid,则检查目录项,向拥有者转发读请求信息,之后Owner将状态设置为Share,将数据发送给请求者,同时更新Home Memory。请求者接受到数据后即可进行读操作,具体流程可见图3-5。如果Cache命中且状态为Owner,直接进行读操作即可。如果Cache命中,且状态为Share,直接进行读操作即可。



图3-4



图3-5
在整个协议中,整体的状态迁移过程可以用图3-6来说明。其中,RW和RR分别代表其他处理器写操作和其他处理器读操作;LR和LW分别代表本地处理器读操作和本地处理器写操作。



图3-6
综上所述,该协议的处理流程、状态转换和通信方式彼此是统一、自洽的,可以通过正常的状态转移和通信保证Cache的一致性。

5、协议评价和总结

本文所提出的Cache一致性协议针对4*4Torus的互连结构,以分散式全映射目录表法为基础,并借用了Token协议中Token计数机制,即当需要进行写操作而本身Cache的状态不为Owner时,需要获得所有其他拥有者的无效化应答,才可以进行写操作。

同时,本文所提出的一致性协议在维护Cache数据块一致性的同时,也保证有效数据块中目录项的一致性,同时借助本文协议中所设计的处理流程,对于所有可遇状况中的一半可以在第二步获取到所需要数据,少于基础目录表法的三步,同时使用分散目录表法减少了目录查询延迟。因此本文所提出的方法的数据缺失延迟多于监听法,但少于基础目录表法。当然,本协议可以直接用于Torus等无序结构,而监听协议不可以。

当然,本方法会占用一定的存储空间,若一个数据块存放的数据量为16Byte,那么该方法造成的额外内存消耗为12.3%左右,是可以接受的,但是如果处理器的数目增加,会导致占用量迅速上升,也就是说该方法的扩展度有限。

当然,本文提出的一致性协议并没有经过仿真实验,并且可能存在一些瑕疵,具体的效果有待验证。

参考文献:

[1]黄安文,张民选.多核处理器
Cache 一致性协议关键技术研究[J].
计算机工程与科学, 2009, 31(A01): 104-108.

[2] Tang C K. Cache system design in the tightly coupledmultiprocessor system[C]//Proceedings of the June 7-10, 1976, national computerconference and exposition. ACM, 1976: 749-753.

[3] Censier L M, Feautrier P. A new solution to coherenceproblems in multicache systems[J]. Computers, IEEE Transactions on, 1978,100(12): 1112-1118.

[4] 王钰. 可缩放性Cache一致性协议分析[J]. 电光与控制, 1999 (2): 44-48.

[5]潘国腾, 窦强, 谢伦国. 基于目录的Cache 一致性协议的可扩展性研究[J]. 计算机工程与科学, 2008, 30(6): 131-133.

[6] 周川. 众核处理器中动态可重构 Cache 一致性协议的研究与实现[D]. 上海交通大学, 2013.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: