威斯康辛多维立方体在计算机体系结构中的结构是什么?
威斯康辛多维立方体架构采用行总线和列总线构建二维网格结构,如图所示。三维泛化将呈现为立方体结构。
为了描述威斯康辛多维立方体架构的缓存一致性协议,必须给出以下定义:
内存中块的可能状态
未修改 - 主内存中的值是正确的,并且可以有多个正确的缓存副本。
已修改 - 主内存中的值已过期,并且只有一个正确的缓存副本。
缓存中块的可能状态
特定缓存中的数据块可以具有三种不同的本地状态:共享(其在主内存中的副本处于全局未修改状态)、已修改(其在主内存中的副本处于全局已修改状态)、无效。每个缓存控制器包含一个称为已修改行表的特殊数据结构。该表存储驻留在该列缓存中的所有已修改数据块的地址。
缓存控制器可以发出四种类型的协调命令:
读取 - 关联处理器希望读取其缓存中不存在的数据块。
读-修改 - 关联处理器希望写入其缓存中未处于修改状态的数据块。
分配 - 无论其当前内容如何,都要写入整个块。
写回 - 应更新主内存中的数据块并将其设置为未修改状态。
缓存和内存中状态转换的定义,以及命令传输路径的定义。这里只解释了READ和READ-MOD命令的执行机制。感兴趣的读者可以参考Goodman和Woest (1988)了解其他一致性事务的细节。
对处于已修改状态的数据块X的读取请求 - 读取请求在行总线上发出,并由其修改行表包含X地址的控制器接受。假设请求者为C00,X的已修改副本由C11持有,X的主列在第2列。在这种情况下,C01接受请求并在列总线上广播它,所有控制器都将X的状态更改为未修改。
对处于未修改状态的数据块X的读取请求 - 在这种情况下,主列控制器C02接受请求。如果C02中有X的副本,则直接通过行总线将其发送回C00。
对处于已修改状态的数据块X的读-修改请求 - 在前两个总线操作拾取请求后,使X的副本失效,并在列总线上进行传输。最后,C00拾取X,更新它,并以已修改状态存储它。
对处于未修改状态的数据块X的读取请求 - 在这种情况下,主列控制器C02接受请求并将其转发到主内存,主内存将发送无效请求以及X的副本。列总线上的每个控制器都接受无效请求并在关联的行总线上广播它。