资源描述:
《多处理器系统cache一致性分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多处理器系统cache一致性分析摘要:高速缓冲存储器(cache)技术在多处理器系统中占有重要地位。Cache在降低平均访问时间的同时也带来了新的问题,即cache一致性问题:如何使同一数据块在不同cache以及主存中的多个备份保持数据一致性。本文详细分析了cache一致性协议及其相关技术,并对目前出现的片上网络(NetworkingOnChip)系统的cache一致性作了一定的探讨。关键词:高速缓冲存储器多处理器一致性片上网络在多处理器的环境中,可能会出现高速缓存(cache)和主存储器中同一个数据拷贝不一致,并且多个处理器是独立的异步的操作。因此不同处理器之间的同一份数据
2、的拷贝也可能不同。这就是cache的不一致性。但是各个处理器可能要独立地对同一份数据进行操作,因此如何保证操作的是最新的数据,就必须维护cache的一致性。本文首先探讨cache不一致的原因,在此基础上叙述各种解决不一致性的方法,主要是通过硬件来保证cache的一致性,详细介绍了监听法和目录法,并进行了相关分析。最后对于目前出现的片上网络系统如何保持cache一致性作了一定的分析。1Cache一致性问题1.1存储器系统一致性一般情况下,如果在一个存储器系统中,读取任何一个数据项的返回结果都是最近写入的数值,则认为这个存储器是一致的。这个简单的定义包含了存储器系统行为的两个不同
3、方面:第一方面是高速缓存一致性(coherence),它定义了读操作可以返回什么样的数值;第二方面是存储器一致性(consistency),它定义了写入的数值什么时候才能被读操作返回。如果一个存储器系统满足如下要求,则认为该存储器系统是一致的[1]:u处理器P在完成对X的写操作后紧接着对X进行读操作,而在这两个操作之间没有其他处理器对X进行写操作,则读操作总是返回由P写入的值。u在其他处理器完成对X的写操作后处理器P对X进行读操作,并且写操作和读操作之间有足够的时间间隔,在此期间也没有其他处理器对X进行写操作,则读操作返回的是写入的数值。u对同一单元的写是串行执行的,即任意两
4、个不同的处理器对同一单元的两次写操作在所有处理器看来顺序是相同的。1.2Cache中出现数据不一致的原因1.2.1共享可写数据引起的不一致如图1所示,处理器P1和P2共享同一个主存储器。在P1和P2的本地高速缓存C1和C2中分别有主存储器中某个单元中的数据X的拷贝。当P1把X的值改变成Y之后,如果P1采用写通过(WriteThrough)策略,即同时也修改主存储器中该数据的值,则主存储器中相应单元的内容也变为Y,但是P2处理器中C2的内容还是X,这样就导致了C2和主存储器中的数据不一致,当P2处理器要读取修改后的数据Y时,它实际读到的是C2的内容X。如果P1采取写回(Writ
5、eBack)策略,即不立即修改主存储器中该数据的值,此时主存储器中的内容还是X,这样就导致了C1和C2中的数据不一致,当P2处理器要读取修改后的数据Y时,实际读到的也是X。图1共享可写数据引起的数据不一致性1.2.2进程迁移引起的数据不一致进程迁移引起的数据不一致与共享数据时类似。如图2所示,处理器P1中有共享数据X的拷贝,而P2中没有,P1中的进程对X进行了修改,采用写回策略,暂时没有对内存中的数据进行修改,然后由于某种原因该进程迁移到了P2上运行,修改过的Y仍然在P1的C1中。P2运行时从内存中读取得到X,但是这时读到的X已经“过时”了。或者另一种情况,P1和P2中都有共
6、享数据X的拷贝,P2修改了X,并且采用写通过策略,所以内存中的X也修改成了Y。然后由于某种原因该进程迁移到P1上,但此时P1的C1中仍然是X。以上2种情况下,都会出现高速缓存不一致。图2进程迁移引起的cache不一致1.2.3I/O传输引起的数据不一致绕过cache的I/O操作也会引起数据的不一致。如图3所示,假设在处理器P1和P2的本地高速缓存C1和C2中有某个数据X的拷贝,当I/O处理器将一个新的数据Y写入主存储器时,绕过采用写通过策略的Cache,这样就导致了主存储器与Cache之间的数据不一致。或者假设C1和C2中都有X的拷贝,但是处理器P1在运行过程中修改了X的值,
7、使之变成了Y,并采取写回策略,这样C1中的内容和主存储器中的内容是不一致的。若此时I/O处理器来了一个读X的请求,主存储器就直接把X的值传给I/O部件,显然这个X已经是“过时”的。这2种情况都会导致Cache不一致。图3I/O传输引起的cache不一致2Cache一致性协议人们已经提出了许多cache一致性协议来解决cache一致性问题。Cache一致性协议的实质是把一个处理器新写的值传播给其他处理器的一种机制。2.1Cache一致性协议中的写策略按照存储层次的要求,cache内容应是主存部分内容的一个