CHI协议学习记录

RetToSrc

return to source的缩写,是Home Node在发送侦听请求时设置的一个属性,属于Snoop request的一个field。如果设置了RetToSrc, 就是告诉被侦听的节点:"如果你有数据,请不要把数据发给我,请直接把它发回给最初的请求者。"

ExpCompAck

它是一种由请求节点使用的机制,用于 明确地向系统确认,它已经安全地收到了一个完成响应,并且相关资源已经释放

简单来说,它是在说:"我之前请求的那个事务,你(HN)已经告诉我完成了,我现在正式确认,我已经处理完毕,你可以彻底清理掉所有相关信息了。"


为什么需要 ExpCompAck?------ 解决一个关键问题

要理解 ExpCompAck,必须先理解它要解决的问题:HN 的资源管理困境

在没有 ExpCompAck 的普通事务中:

  1. RN 发出请求,HN 为其分配资源(如缓冲区条目、跟踪记录)。

  2. HN 处理事务,并向 RN 发送 CompCompData

  3. HN 在发送完 Comp 后,就立即释放其内部资源。

这看起来合理,但实际上存在一个风险:RN 可能由于各种原因(如缓冲区满、内部拥塞)未能成功处理这个 Comp 响应。如果 HN 已经释放了资源,当 RN 最终反应过来并试图重试或采取其他行动时,HN 可能已经"忘记"了这个事务,导致协议错误或死锁。

为了解决这个问题,CHI 引入了 持久性完成 的概念,而 ExpCompAck 就是其核心组成部分。


工作机制:持久性事务流程

ExpCompAck 通常与 Comp 响应中的 Persistent 属性配合工作。整个流程如下:

  1. 请求阶段

    • RN 发起一个请求(例如 ReadNoSnp),并在请求包中设置 ExpCompAck。这等于告诉 HN:"这是一个需要显式确认的事务,在我明确确认之前,请你为我保留资源。"
  2. Home Node 处理

    • HN 识别出 ExpCompAck 位。它为此事务分配资源,并 将其标记为"持久性"的,意味着该资源的释放将等待一个明确的信号。

    • HN 处理该请求,并准备发送完成响应。

  3. 完成响应阶段

    • HN 向 RN 发送完成响应(CompCompData)。在这个响应包中,HN 会设置 Persistent ,作为对 RN 初始 ExpCompAck 的回应,意思是:"好的,我知道你需要显式确认,这是我给你的完成信号,但我会把资源保持住,直到收到你的 ExpCompAck。"
  4. 请求者确认阶段

    • RN 收到带 Persistent 位的完成响应。

    • RN 内部安全地处理了这个完成(例如,将数据交付给核心,释放内部的 TxnIDDBID)。

    • 一旦 RN 确定事务已完全处理完毕 ,它会向 HN 发送一个 ExpCompAck 事务 。这是一个独立的事务,其中包含原始事务的 TxnIDSrcID

  5. Home Node 最终释放

    • HN 收到 ExpCompAck

    • HN 现在可以 安全地释放 所有为该事务分配的宝贵资源。

LikelyShared

请求节点在发起读请求时提供的一个属性。向接收者(通常是Home Node)表明,请求者预测所请求的数据很可能被系统中的多个代理所共享,即告诉HN:我需要读这个数据,但我猜测其他组件可能也会读它,所以在处理我的都请求时,可以做一些优化来方便后续的访问。HN可以不做任何处理,即忽略LikelyShared的提醒;如果不忽略,可以做一些优化处理

PrefetchTgtHint

请求节点发出transaction的一个field。允许一个请求节点向系统发出一个预期请求,并指定数据在返回后应该在哪个特定的缓存层次或位置。简单来讲,不仅仅是读取一个数据,而是:请把数据取回来,并直接放在我设置的这个位置。例如,CPU告诉HN将数据放在GPU中。

DEEP persistent

请求节点发出transaction的一个field。一个相对高级且专门针对 持久化内存(Persistent Memory, PM) 的特性。

DEEP persistent 的核心运作依赖于两个关键概念:

1. Persistent Point

这是一个由 请求者 发起的特殊事务。它不是一个数据事务,而是一个 屏障标记

  • 作用 :在事务流中创建一个"点"。请求者通过这个点要求:所有在此 Persistent Point 之前发出的、目标为 DEEP 持久化域的 写操作,都必须在该点被确认之前,完成持久化。

  • 类比:就像在快递分拣中心设置一个检查点,要求所有在这个检查点之前收到的包裹,必须全部装车发走后,才能确认这个检查点已完成。

2. Persistent Acknowledge

这是系统对 Persistent Point 的响应。

  • 作用 :当 Home Node 确保所有先前的写操作已经真正到达持久化介质(例如,已经刷新了内存控制器中的写持久队列并到达 PMEM)后,它会向请求者返回一个 CompAck 响应,作为对 Persist 事务的确认。

  • 意义 :一旦请求者收到这个 Persistent Acknowledge,软件就可以确信:所有在 Persist 点之前的写操作都已经安全了。如果此时发生断电,数据也不会丢失。

StashNID

Stash Node ID。Stash与 缓存预取数据局部性 优化相关的独特且强大的功能。一个RN发出的读请求,可以设置StashNID和StashLPID(Stash Logical Processor Identifier)。HN除了将数据返回给RN外,还会发出一个SnpStash,将数据发送给StashNID+StashLPID

NS和NSE

Non-secure、Non-secure Extension,用来支持Trust-Zone

PBHA

Page-based Hardware Attribute,属于Data packet中一个field。它允许软件通过页表项中的特定比特位,向硬件传递微架构优化的提示 。简单来说,它让你可以在操作系统的内存管理层面,为不同的内存页"打上标签",然后硬件(如 CPU 缓存、互连网络)可以识别这些标签,并对这些页的访问采取不同的优化策略。

例如:PBHA = 2 :标记为 高优先级 数据。硬件可能会将其分配在靠近命中端的缓存位置,使其保留更长时间。

PBHA只是提示,而不强制实现。

FwdState

Forward State 是 Home Node 在其 目录 中为某个缓存行维护的一种特殊状态。当一条缓存线处于 Forward State 时,意味着 HN 知道系统中有一个或多个节点的缓存中持有该数据的有效副本,并且授权其中一个特定的节点作为"转发源",未来其他节点的读请求可以直接从这个"转发源"获取数据,而无需再访问主内存。

简单来说,HN 在此时扮演了一个"交通指挥员"的角色,它不再自己去内存取数据,而是告诉请求者:"数据不在我这儿,你去某某节点那里拿,它那儿有最新的副本。"

DBID

Data Buffer ID。CHI的数据和resp可能乱序返回,为了数据和resp的匹配,RN对发出的读请求分配一个RN内唯一的DBID,**后续返回给RN的数据,会贴上这个 DBID 标签(**包括数据和resp)。

RN 通过管理一个有限的 DBID 池,可以实施背压机制。如果 DBID 用尽,它将停止发出新的需要数据返回的请求,从而防止自身缓冲区溢出

PCrdReturn和PrefetchTgt不会返回retry的原因

PCrdReturn用来返回一个之前消耗的credit,不能retry,否则可能死锁;PrefecthTgt是提示性的,因此无需retry

RN-F & RN-I & RN-D

3类请求节点。区别在于是否参与数据的一致性维护;

RN-F完全参与数据一致性维护,比如CPU集群、GPU等;

RN-I是一个 I/O 一致性 的请求节点。它 不维护缓存一致性 ,但需要感知系统的一致性,依赖HN进行一致性管理;主要发起 ReadNoSnpWriteNoSnp不触发侦听 的请求。它不能发起 ReadUnique 这类会改变其他节点缓存状态的请求。RN-I不会接收或处理Snoop请求。比如网络控制器、存储控制器、USB/PCIe 控制器

RN-D 是一个 直接数据访问 的请求节点。这是三种类型中 最简单、能力最弱 的一种。RN-D 不能发起读操作 。它是一个纯粹的数据生产者。不处理任何Snoop请求。用于将数据直接写入内存或其他节点的缓存。例如DMA控制器、图像传感器接口等。

CompData

RN发出的读请求,如果HN本地cache有目标数据,则直接返回CompData(包含和response和read data)

RespSeqData & DataSeqResp

如果HN不能及时提供read data,可以先发送RespReqData,再发送DataSeqResp。RespReqData和DataSeqResp可由不同的组件发出,比如HN发出RespReqData,SN发出DataSeqResp。HN收到RespSeqData时,可提前发出CompAck,而不用等待DataSeqResp

相关推荐
CodingCos2 年前
【ARM AMBA5 CHI 入门 12 -- CHI 总线学习 】
chi·home node·rn·hn·sn·ci-700·chi sam