27

xucvai · 2021年08月02日

ARM系列 -- CHI(三)

开始之前,先回顾一下。一个message可以是transaction request,data response,snoop request,由一个或多个packet构成;packet是ICN和端点间的传输粒度,一个packet由一个或多个flit组成;flit是最小的流控单位,一个flit由一个或多个phit组成;phit是物理层传输单位,被定义为两个相邻网络设备之间的一次传输。

通过node ID可以在ICN路由,RN和HN,HN和SN之间有不同的通道,每个通道有自己字段(fields),对于transaction request,data,snoop request和response来说,包含的字段不一样。

在基于CHI的系统中,处理器的读请求可以通过很多种来源得到数据,比如:互连中的cache(一般是last level cache),SN(存储设备)或者其它的RN-F(拥有该数据的缓存行)。

1.jpg

对于RN-F或SN返回的读数据,可以发送给HN,HN再转发数据给原始的Requester;也可以直接跳过HN,返回数据给原始Requester,这样可以减少读数据的延时。有以下两种直接返回数据方式:

  • Direct Memory Transfer(DMT):SN直接返回数据给原始的Requester
  • Direct Cache Transfer(DCT):其它RN-F直接返回数据给原始Requester

在DCT中,数据提供者需要通知HN它已经将数据发给原始Request了,在某些情况下,数据提供者也必须发送一份拷贝数据给HN。

我们来看看CHI的transaction flow。以下图的snoopable read DMT为例:

  • Requester通过REQ通道发送一个snoopableread request;
  • ICN通过REQ通道发送一个ReadNoSnp给相应的SN;
  • SN,作为completer,在RDAT通道上,使用CompData将读取的数据和任何关联的事务响应直接转发给的请求者,协议规定,completer必须在接收request之后才能发送CompData;
  • Requester通过SRSP通道使用CompAck返回一个响应给ICN,表示交易完成。协议规定,requester至少需要接收到一个CompData包以后才能发送CompAck。

2.png

对于DMT,协议还有一些限制如下:

3.png

再看一个DCT的例子,流程和DMT差不多:

  • Requester过REQ通道发送一个snoopableread request;
  • ICN通过SNP通道发送一个Snp[*]Fwdrequest给RN-F
  • 该RN-F作为completer,在RDAT通道上,使用CompData将读取的数据和任何关联的事务响应直接转发给的请求者;
  • 该RN-F通过SRSP通道,返回一个SnpRespFwded给ICN,表示已经把读数据发给了requester。协议规定,completer必须在接收snoop之后才能发送CompData;
  • Requester通过SRSP通道使用CompAck返回一个响应给ICN,表示交易完成。协议规定,一旦接收到读取数据的第一个数据包,就可以发送CompAck。

4.png

对于DMT和DCT以外的读数据传输,RN得到的数据都是来自HN的。

5.png

66.png

对于write,atomic等等这些,spec里面都有说明,我就不一一贴图解释了。

CHI协议里面,对于地址支持:

  • 物理地址(physical address,PA):44-52 bits
  • 虚拟地址(virtual address, VA):49-53 bits

REQ和SNP packet的地址字段为(MPA是所支持的PA的最大值):

  • REQ通道:Addr[(MPA-1):0]
  • SNP通道:Addr[(MPA-1):3]

CHI通过secure bit定义了安全(secure)和非安全(non-secure)两种类型,以支持安全和非安全操作。对于Snoopable事务,此字段可以视为定义两个地址空间的附加地址位,安全地址空间和非安全地址空间。

内存属性这个问题,此处就不再讲了,请翻看以前的旧文,《ARM系列 -- 存储模型(二)》。

包中的size字段,结合其它一些字段,可以规定传输数据的字节数。Size字段的编码如下,所有snoop数据都是64-byte的。

6.png

Byte Enables也简称为BE,与Writetransactions和Snoop response数据一起传输。对于Write transactions,BE置位意味着相应data byte有效,数据必须更新到memory或cache。

对于携带数据的transaction,其数据可以分在几个包(packet)中传输,需要的包的个数取决于两点:要传输的数据字节数,和数据总线宽度。每个包中的字节数取决于数据总线宽度。CHI目前支持的数据总线宽度有三种:128-bit,256-bit和512-bit。

协议中还定义了逻辑处理器标识符(Logical Processor Identifier,以后简称LPID),这个字段用于当一个requester里面包含多于一个的逻辑独立处理单元情况。

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/WmJYf-DoyIX2X4NOGPrWrg
微信公众号:
老秦.jpg

相关文章推荐

更多AMBA协议相关知识请关注Arm AMBA 协议集专栏
推荐阅读
关注数
7876
内容数
81
Arm AMBA协议集,APB,AHB,AXI,CHI等相关公开课回放及文章
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息