什么是COMA?
COMA代表仅缓存内存访问机器。COMA机器包括通过互连网络连接的多个处理节点。每个处理节点都有一个高性能处理器、一个缓存和一个全局共享内存的分配。
COMA机器通过将主内存块从节点的本地内存中排除,只使用大缓存作为节点内存来避免NUMA和CC-NUMA机器的静态内存分配问题。在这些架构中,只存在高速缓存;无论是在UMA机器中以中央共享内存的形式还是在NUMA和CC-NUMA计算机中以分布式主内存的形式使用,都没有使用主内存。
有两种代表性的COMA架构如下-
DDM(数据扩散机)
DDM是一种分层的、树状的多处理器,其中树的叶子代表基本的DDM架构。基本的DDM是一个基于单总线的多处理器,它包含多个连接到DDM总线的处理器/吸引力存储器对。一个景点内存由三个主要单元组成,例如状态和数据内存单元、控制器和输出缓冲区。
DDM采用异步拆分事务总线,即在请求事务与其响应之间释放总线。引入了写入无效的snoopy-cache协议,该协议将广播要求限制为较小的子系统,并扩展了对替换的支持。
KSR1
KSR1机器是第一台商用COMA机器,其中逻辑上单一的地址空间是由一组本地缓存和所谓的ALLCACHE引擎实现的。ALLCACHE引擎基于分布式目录方案实现了顺序一致的缓存一致性算法。ALLCACHE将数据存储在页面和子页面中。本地缓存中的内存分配单位是包含16KB的页面。本地缓存之间数据传输的单位是由128个字节组成的子页。
分布式目录是一个矩阵,其中每个子页面分配一行,每个子页面分配一列,每个本地缓存分配一列。如果相应的本地缓存不包含子页面的任何副本,则矩阵元素为空。由于这是一般情况,矩阵非常稀疏,因此以压缩方式存储,排除那些空元素。非空元素可以代表以下四种状态中的任何一种-
EO(ExclusiveOwner)-这是整机中唯一有效的副本。
C(副本)-机器中至少存在子页面的两个有效副本。
NO(非独占所有者)-当子页面存在多个副本时,其中一个被标记为非独占所有者。
I(Invalid)-虽然子页面的副本存在于本地缓存中,但它是无效的,不会被使用。