CHI 开发备忘 01 记 -- CHI spec 01章 简介

第 1 章 引言

本章介绍 CHI 架构以及整个规范中使用的术语。它包含以下部分:

• 架构概述 第 1-18 页。

• 拓扑结构 第 1-20 页。

• 术语 第 1-21 页。

• 事务分类 第 1-23 页。

• 一致性概述 第 1-25 页。

• 组件命名 第 1-27 页。

• 读数据源 第 1-29 页。

1 引言

1.1 架构概述

1.1 架构概述

CHI 架构提供了一个全面的分层规范,用于构建由多个组件组成的小型、中型和大型系统,这些系统使用可扩展的一致性集线器接口和片上互联。CHI 架构允许在组件连接的拓扑结构上具有灵活性,这可以由系统性能、功耗和面积需求驱动。

基于 CHI 的系统的组件可以包括独立处理器、处理器集群、图形处理器、内存控制器、I/O 桥、PCIe 子系统以及互联本身。

该架构的关键特性包括:

  • 可扩展架构,支持从中小系统扩展到大型系统的模块化设计。

  • 独立分层方法,由协议层、网络层和链路层组成,各层功能明确。

  • 基于数据包的通信

  • 所有事务由基于互联的归属节点处理,该节点协调所需的侦测、缓存和内存访问。

  • CHI 一致性协议支持

    • 一致性粒度为 64 字节缓存行。

    • 基于侦测过滤器和目录的系统,用于侦测扩展。

    • 支持 MESI 和 MOESI 缓存模型,并支持从任何缓存状态转发数据。

    • 额外的部分和空缓存行状态。

  • CHI 事务集包括

    • 丰富的事务类型,允许实现性能、面积和功耗高效的系统缓存。

    • 支持互联内的原子操作和同步。

    • 用于高效移动和放置数据的事务,以便及时将数据移动到预期使用点附近。

    • 通过分布式虚拟内存(DVM)操作进行虚拟内存管理。

    • 请求重试以管理协议资源。

  • 支持端到端服务质量(QoS)

  • 可配置的数据宽度以满足系统需求。

  • 基于逐事务的 ARM TrustZone™ 支持

  • 针对生产者-消费者排序模型 优化的写一致性的事务流程

  • 跨组件和互联的错误报告和传播,以实现系统的可靠性和完整性。使用数据毒化和每字节错误指示处理子缓存行数据错误。

  • 组件接口上的功耗感知信令

    • 支持 Flit 级时钟门控。

    • 用于时钟门控和电源门控控制的组件激活和去激活序列。

    • 用于功耗和时钟控制的协议活动指示。

1.1.1 架构层次

功能被分组为以下几层:

• 协议层。

• 网络层。

• 链路层。

表 1-1 描述了每一层的主要功能。

表 1-1 CHI 架构的层次

通信粒度 主要功能
协议层 事务 协议层是 CHI 架构中的最顶层。协议层的功能是: • 在协议节点处生成和处理请求及响应。 • 定义包含缓存的协议节点处允许的缓存状态转换。 • 定义每个请求类型的事务流程。 • 管理协议级流控。
网络层 数据包 网络层的功能是: • 将协议消息打包成数据包。 • 确定路由数据包通过互联到达所需目的地所需的源和目标节点 ID,并将其添加到数据包中。
链路层 Flit 链路层的功能是: • 提供网络设备间的流控。 • 管理链路通道,以提供跨网络的无死锁交换。

1.2 拓扑结构

CHI 架构主要与拓扑无关。然而,本规范中包含了一些依赖于拓扑的优化,以使实现更高效。图 1-1 展示了三个拓扑示例,用以说明可用的互联带宽和可扩展性选项的范围。

图例:

协议节点,例如处理器复合体、内存控制器或 I/O 复合体

路由器

图 1-1 互联拓扑示例

Crossbar

这种拓扑结构构建简单,自然地提供具有低延迟的有序网络。它适用于连线数量仍然相对较小的场景。这种拓扑适用于节点数量较少的互联。

Ring

这种拓扑结构在互联布线效率和延迟之间提供了良好的权衡。延迟随着环上节点数量的增加而线性增加。这种拓扑适用于中等规模的互联。

Mesh

这种拓扑结构以更多连线为代价提供更高的带宽。它非常模块化,并且可以通过添加更多的开关行和列轻松扩展到更大的系统。这种拓扑适用于更大规模的互联。

1.3 术语

以下术语在本规范中具有特定含义:

事务
消息
数据包
Flit
Phit
PoS
PoC
PoP
下游缓存
请求者
完成者
主设备
从设备
端点
协议信用
链路层信用
ICN
IPA
RN
HN
SN
MN
IO 一致性节点
被侦测者
写无效协议
及时
无关
不适用

执行单个操作。通常,事务要么从内存读取,要么向内存写入。

协议层术语,定义了两个组件之间的交换粒度。例如:

• 请求。

• 数据响应。

• 侦测请求。

一个单独的数据响应消息可能由多个数据包组成。

端点之间通过互联传输的粒度。一个消息可能由一个或多个数据包组成。例如,一个单独的数据响应消息可以由 1 到 4 个数据包组成。每个数据包包含路由信息,例如目标 ID 和源 ID,使其能够独立地通过互联进行路由。

最小的流控单元。一个数据包可以由一个或多个 Flit 组成。给定数据包的所有 Flit 在通过互联时遵循相同的路径。
注意

对于 CHI,所有数据包都由单个 Flit 组成。

物理层传输单元。一个 Flit 可以由一个或多个 Phit 组成。Phit 定义为两个相邻网络设备之间的一次传输。
注意

对于 CHI,所有 Flit 都由单个 Phit 组成。

序列化点。互联内的一个点,用于确定来自不同代理的请求之间的顺序。

一致性点。所有可以访问内存的代理保证能看到同一内存位置副本的点。在典型的基于 CHI 的系统中,它是互联中的 HN-F。

持久点。内存系统中的一个点(如果存在),位于一致性点处或之后,当系统断电时,对内存的写入得以维持,并在受影响的内存位置恢复供电时可靠地恢复。

从请求节点的视角定义的下游缓存。对于某个请求来说,下游缓存是指该请求使用 CHI 请求事务访问的缓存。请求节点可以发送带有数据的请求,以将数据分配到下游缓存中。

通过发出请求消息来启动事务的组件。术语请求者可以用于独立发起事务的组件,这样的组件也称为主设备。术语请求者也可以用于互联组件,该组件独立地或作为系统中发生的其他事务的副作用而发出下游请求消息。

对从其接收的事务做出响应的任何组件。完成者可以是互联组件,例如归属节点或杂项节点,也可以是互联外部的组件,例如从设备。

独立发起事务的代理。通常,主设备是系统中最上游的代理。主设备也可以称为请求者。

接收事务并适当地完成事务的代理。通常,从设备是系统中最下游的代理。从设备也可以称为完成者或端点。

从设备组件的另一种称呼。顾名思义,端点是事务的最终目的地。

来自完成者的信用或保证,表明它将接受一个事务。

保证 Flit 将被链路另一端接受的信用。链路层信用(L-Credit)是链路层单跳的信用。

互联的简称,是用于协议节点之间通信的 CHI 传输机制。ICN 可能包括以环、网格、交叉开关或其他拓扑结构连接的交换机网络。ICN 可能包括诸如归属节点和杂项节点之类的协议节点。ICN 的拓扑结构是实现定义的

中间物理地址。在两阶段地址转换中:

• 第一阶段产生中间物理地址。

• 第二阶段提供物理地址。

请求节点。向互联生成协议事务,包括读和写。

归属节点。位于互联内部的节点,从请求节点接收协议事务,完成所需的一致性操作,并返回响应。

从节点。从归属节点接收请求,完成所需操作,并返回响应的节点。

杂项节点。位于互联内部的节点,从请求节点接收 DVM 消息,完成所需操作,并返回响应。

除了生成非侦测请求外,还生成一部分可侦测请求的 RN。IO 一致性节点生成的可侦测请求不会导致接收到的数据以一致性状态被缓存。因此,IO 一致性节点不会接收任何侦测请求。

正在接收侦测的请求节点。

一种协议,在该协议中,对系统中共享的缓存行进行写入的 RN 必须在进行写入之前使所有共享副本无效。CHI 协议是一种写无效协议。

协议无法定义某件事必须发生的绝对时间。然而,在一个足够空闲的系统中,它会取得进展并完成,而无需任何显式操作。

字段值,指示该字段可以设置为任何值,包括保留或非法值。任何接收到字段值设置为无关的数据包的组件必须忽略为该字段设置的值。

字段值,指示该字段在消息处理中不被使用。

1.4 事务分类

本规范支持的协议事务及其主要分类如下:

  • ReadNoSnp, ReadNoSnpSep。

  • ReadOnce。

  • ReadOnceCleanInvalid。

  • ReadOnceMakeInvalid。

  • ReadClean。

  • ReadNotSharedDirty。

  • ReadShared。

  • ReadUnique。

  • CleanUnique。

  • MakeUnique。

  • Evict。

  • StashOnceUnique。

  • StashOnceShared。

无数据

  • CleanShared。

  • CleanSharedPersist。

  • CleanSharedPersistSep。

  • CleanInvalid。

  • MakeInvalid。

  • WriteNoSnpPtl, WriteNoSnpFull。

  • WriteUniquePtl, WriteUniqueFull。

  • WriteUniquePtlStash, WriteUniqueFullStash。

  • WriteBackPtl, WriteBackFull。

  • WriteCleanFull。

  • WriteEvictFull。

原子

  • AtomicStore。

  • AtomicLoad。

  • AtomicSwap。

  • AtomicCompare。

在本规范中,除非特别说明:

  • ReadOnce* 代表 ReadOnce、ReadOnceCleanInvalid 和 ReadOnceMakeInvalid。

  • WriteNoSnp 代表 WriteNoSnpPtl 和 WriteNoSnpFull。

  • WriteUnique 代表 WriteUniquePtl、WriteUniqueFull、WriteUniquePtlStash 和 WriteUniqueFullStash。

  • WriteBack 代表 WriteBackPtl 和 WriteBackFull。

  • StashOnce 代表 StashOnceUnique 和 StashOnceShared。

  • CleanSharedPersist* 代表 CleanSharedPersist 和 CleanSharedPersistSep。

其他

  • DVMOp。

  • PrefetchTgt。

  • PCrdReturn。

侦测

  • SnpOnceFwd。

  • SnpOnce。

  • SnpStashUnique。

  • SnpStashShared。

  • SnpCleanFwd。

  • SnpClean。

  • SnpNotSharedDirtyFwd。

  • SnpNotSharedDirty。

  • SnpSharedFwd。

  • SnpShared。

  • SnpUniqueFwd。

  • SnpUnique。

  • SnpUniqueStash。

  • SnpCleanShared。

  • SnpCleanInvalid。

  • SnpMakeInvalid。

  • SnpMakeInvalidStash。

  • SnpDVMOp。

1.5 一致性概述

硬件一致性使系统组件能够共享内存,而无需执行软件缓存维护来维护缓存之间的一致性。

如果两个组件对同一内存位置的写入可以被所有组件以相同的顺序观察到,则该内存区域是一致的。

1.5.1 一致性模型

图 1-2 展示了一个示例一致性系统,其中包括三个主设备组件,每个组件都具有本地缓存和一致性协议节点。该协议允许同一内存位置的缓存副本驻留在一个或多个主设备组件的本地缓存中。

图 1-2 示例一致性模型

一致性协议确保所有主设备在任何给定地址位置观察到正确的数据值,其方法是在对某位置发生存储时强制要求不存在多于一个的副本。每次对某位置进行存储后,其他主设备可以为其自己的本地缓存获取数据的新副本,从而允许多个缓存副本存在。

所有一致性都以缓存行粒度维护。缓存行定义为 64 字节对齐、大小为 64 字节的内存区域。

该协议不要求主内存始终保持最新。仅当不再有任何缓存持有内存位置的副本时,才需要更新主内存。

注意

虽然不是必须的,但在缓存副本仍然存在时更新主内存也是可以接受的。

该协议使主设备组件能够确定缓存行是特定内存位置的唯一副本,还是可能存在该位置的其它副本,以便:

  • 如果缓存行是唯一副本,主设备组件可以在不通知系统中任何其他主设备组件的情况下更改缓存行的值。

  • 如果缓存行可能也存在于另一个缓存中,主设备组件必须使用适当的事务通知其他缓存。

1.5.2 缓存状态模型

为了确定组件访问缓存行时是否需要采取行动,协议定义了缓存状态。每个缓存状态基于以下缓存行特征:

  • 有效、无效

    有效时,缓存行存在于缓存中。无效时,缓存行不存在于缓存中。

  • 唯一、共享

    唯一时,缓存行仅存在于该缓存中。共享时,缓存行可能存在于多个缓存中,但这不能保证。

  • 干净、脏

    干净时,缓存没有更新主内存的责任。脏时,缓存行相对于主内存已被修改,并且该缓存必须确保最终更新主内存。

  • 完整、部分、空

    完整缓存行所有字节有效。部分缓存行可能有一些字节有效,但并非所有字节都有效。空缓存行没有字节有效。

图 1-3 展示了七状态缓存模型。第 4-142 页的缓存行状态提供了关于每个缓存状态的更多信息。

一个有效的缓存状态名称如果不是部分或空,则被认为是完整。在图 1-3 中,UC、UD、SC 和 SD 都是完整缓存行状态。

图 1-3 缓存状态模型

1.6 组件命名

组件按 CHI 协议节点类型分类:

RN

请求节点。向互联生成协议事务,包括读和写。RN 进一步分类为:

  • RN-F 完全一致性请求节点:

    • 包含硬件一致性缓存。

    • 允许生成协议定义的所有事务。

    • 支持所有侦测事务。

  • RN-D 支持 DVM 的 IO 一致性请求节点:

    • 不包含硬件一致性缓存。

    • 接收 DVM 事务。

    • 生成协议定义的子集事务。

  • RN-I IO 一致性请求节点:

    • 不包含硬件一致性缓存。

    • 不接收 DVM 事务。

    • 生成协议定义的子集事务。

    • 不需要侦测功能。

HN

归属节点。位于互联内部的节点,从 RN 接收协议事务。HN 进一步分类为:

  • HN-F 完全一致性归属节点:

    • 预期接收除 DVMOp 之外的所有请求类型。

    • 包含一个一致性点(PoC),通过侦测所需的 RN-F、合并事务的侦测响应,并向请求的 RN 发送单个响应来管理一致性。

    • 预期是管理内存请求之间顺序的序列化点(PoS)。

    • 可能包含目录或侦测过滤器以减少冗余侦测。
      注意
      实现特定,可能包含集成的 ICN 缓存。

  • HN-I 非一致性归属节点:

    • 处理协议定义的有限子集请求类型。

    • 不包含 PoC,无法处理可侦测请求。在接收到可侦测请求时,必须响应一个符合协议的消息。

    • 预期是管理针对 IO 子系统的 IO 请求之间顺序的 PoS。

MN

杂项节点:

  • 从 RN 接收 DVM 事务,完成所需操作,并返回响应。

SN

从节点。SN 从 HN 接收请求,完成所需操作并返回响应。

SN 进一步分类为:

  • SN-F 用于普通内存的从节点类型。它可以处理非侦测读写和原子请求,包括其独占变体,以及缓存维护操作(CMO)请求。

  • SN-I 用于外设或普通内存的从节点类型。它可以处理非侦测读写和原子请求,包括其独占变体,以及 CMO 请求。

图 1-4 展示了通过互联连接的各种协议节点类型。

图 1-4 协议节点示例

1.7 读数据源

在基于 CHI 的系统中,读请求可以从不同的源获取数据。图 1-5 展示了这些源包括:

  • ICN 内的缓存。

  • 从节点。

  • 对等 RN-F。

图 1-5 读请求的可能数据提供者

归属节点的一个选项是要求 RN-F 或从节点仅将数据返回给归属节点。归属节点继而将接收到的数据副本转发给请求者。如果允许数据提供者直接将数据响应转发给请求者而不是通过归属节点,则可以减少此读事务流程中获取数据的跳数。

本规范中支持的利用减少跳数的读延迟节省技术可分为:

直接内存传输(DMT)

定义允许从节点直接将数据发送给请求者的特性。

直接缓存传输(DCT)

定义允许对等 RN-F 直接将数据发送给请求者的特性。

在 DCT 读事务流程中,数据提供者必须通知归属节点它已将数据发送给请求者,并且在某些情况下,它还必须向归属节点发送数据副本。

相关推荐
Eloudy2 天前
CHI 开发备忘 00 记 -- CHI spec 00 目录
arch
Eloudy12 天前
全文 -- TileLang: A Composable Tiled Programming Model for AISystems
人工智能·量子计算·arch
Eloudy15 天前
Rubin“零线缆”液冷模组技术介绍
人工智能·ic·arch
Eloudy1 个月前
NVIDIA NVQLink 量子与经典计算融合的开放式互连架构
量子计算·arch
Eloudy1 个月前
全文 -- Chapter 1. Introduction -- The RISC-V Instruction Set Manual: Volume II
risc-v·arch
vconlln2 个月前
记录我的niri安装
arch
Eloudy2 个月前
11章 像素和顶点数据导出 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
gpu·arch
Eloudy2 个月前
10章 数据共享操作 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
gpu·arch
Eloudy2 个月前
08章 平面内存指令 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
gpu·arch