注:
(6)1 P210:(6)代表该习题是第6章的内容,1是题号(第1题),P210是所在书中的大体页数。
(6)1在交换式Dash多处理机系统中,为了保持缓存一致性,采用了Dash协议,某一簇中的一CPU写一未缓存的数据块,之后另外一簇的另外一CPU读该数据块。试详细说明写操作和读操作是如何进行的。P210
答:写操作:写数据块的CPU先在本地总线发送请求察看邻近CPU的缓存中是否有该数据块。邻近CPU的缓存中没有该数据块,本次查找失败,数据块所在的其他地方,CPU发送信包到其宿主所在簇。这里块的状态为UNCACHED,标记为DIRTY并发送给请求者。
读操作:读数据块的CPU首先检查自己的内存,缓存中无此字,则在本地簇中发出请求,询问本地簇的其他CPU缓存中是否有此字。数据块不在任何簇的缓存中,CPU发一请求信包给该块的宿主所在簇。宿主所在簇的目录管理硬件检查它的表以确定其状态。此处状态为DIRTY,则拥有DIRTY块的簇将数据块发送给请求簇,将其状态改为CLEAN,它还要给宿主所在簇发回一个拷贝以更新存储器,此时块的状态置为CLEAN。
(6 P207)2在基于总线的多处理机系统中,遵循write once协议,假设有C1,C2,C3,C4四个CPU,一操作序列如下:C1读一字W1(只存在于共享存储器中)、C1继续读该字、C2读该字;C1修改该字、C3读该字、C4读该字。试详细说明以上操作序列是如何执行的。
答:如下图:
C1将将字W1的地址放到总线上,并在控制总线上加上“读”信号,存储器读出需要的数据,将其放在总线上,在控制总线上加“准备好”信号,C1即可以读到字W1。由于C1的缓存中含有字W1,所以C1第二次读取时从缓存中读取字W1。C2读取字W1时,C1监听到此读操作,不做响应,内存响应C2 的请求