下图描述一个典型的SMP多处理器结构,使用snooping协议。每个cache使用直接映射,包含4个块,每个块包含两个字。为了简化,cache的地址标签包含全地址,每个字显示两个16进制。一致性协议采用MSI协议。每条指令有下述形式:P#:
[
]P#代表CPU号;
代表读写;
代表内存地址;[
]代表写操作的新值。在初始状态(如图所示)依次进行P0: read 120和P0: write 120 <-- 80两个操作之后,请列出内存和cache的状态变化(例如一致性状态,标签和数据),仅仅描述状态改变的块。例如P0.B0: (I, 120, 00 01)表示处理器P0的块B0有最后状态I,标记为120,数据位00和01。【图片】
A.
P0 从内存120中读入数据, P0.B0: (S, 120, 0020) ;
B.
P0 从内存120中读入数据, P0.B0: (M, 120, 0080)
C.
P0 从内存120中读入数据,P0.B0: (M, 120, 0080) 且 P3.B0: (I, 120, 0020)
D.
P0 从内存120中读入数据, P0.B0: (S, 120, 0080) 且 P3.B0: (S, 120, 0080)