12

Dskpimc? · 2020年07月21日

CHI属性、参数和广播信号

本文描述CHI协议的properties、parameters、broadcast signals,这些指定了一个interface支持的行为。
作者:谷公子

1. Interface properties and parameters

property用于描述一种能力,如果一个property没有声明,那么认为是False的,即不支持。
用于指定interface行为的properties和parameters有:
Atomic_Transactions:
Atomic_Transactions property用于指示一个component是否支持Atomic transactions:

  • 如果没有指定或者为False,Atomic transactions不支持;
  • 为True,Atomic transactions支持;

支持Atomic transactions的组件必须支持所有的Atomic transactions,然而,不要求支持Atomic transactions的组件支持所有memory types。
Cache_Stash_Transactions:
Cache_Stash_Transactions property用于指示一个组件是否支持Cache Stashing transactions:

  • 如果没有指定或设置为False,那么不支持Cache Stashing transactions;
  • 为True,支持Cache Stashing transactions。

Direct_Memory_Transfer:
Direct_Memory_Transfer property用于指示一个组件是否支持Direct Memory Transfer transactions:

  • 如果没指定或为False,则不支持DMT;
  • 为True,支持DMT;
  • DMT属性是在HN上为每个RN设置的。

Direct_Cache_Transfer:
Direct_Cache_Transfer property用于指示一个组件是否支持Direct Cache Transfer transactions:

  • 如果没有指定或为False,DCT transaction是不支持的;
  • 如果为True,支持DCT transactions
  • 是由HN-F来决定正确的snoop type。

Data_Poison:
Data_Poison property用于指示是否一个组件支持Posion:

  • 如果没有指定或为False,不支持Posion,且DAT packet中不存在Posion域段;
  • 如果为True,支持Posion,且DAT packet中存在Posion域段。

Data_Check:
Data_Check property用于指示是否支持Data Check:

  • 如果没有指定或为False,不支持Data Check,且DAT packet中不存在DataCheck域段;
  • 如果设置为Odd_Parity,则支持Data Check,且DAT packet中存在DataCheck域段。

CCF_Wrap_Order:
见博文《CHI协议层》的介绍。

Req_Addr_Width:
Req_Addr_Width parameter指示了一个组件支持的最高物理地址physical address:

  • 该参数的合法值为44~52;
  • 当Req_Addr_Width参数没有指定,默认值为44;

NodeID_Width:
NodeID_Width parameter用于标识一个组件的NodeID域段的宽度,它决定了系统中NodeID的最大允许值:

  • 所有相关的NodeID域段宽度都要统一;
  • NodeID_Width的合法值为7~11;
  • 如果NodeID_Width没有指定,默认值为7。

Data_Width:
Data_Width parameter用于标识一个组件的DAT通道的packet支持的data width:

  • Data_Width的合法值为128,256,512;
  • 当Data_Width没有指定时,默认值为128。

Enhanced_Features:
Enhanced_Features property标识CHI协议中其它features的组合,这些特性没有明确的property或parameter:

  • 如果Enhanced_Features property为True,组件支持下面的enhanced features:1. Data return from SC state. 2. I/O Deallocation transactions. 3. ReadNotSharedDirty transaction. 4. CleanSharedPersist transaction. 5. Receiving of Forwarding snoops;
  • 如果没有指定或为False,组件不支持没有明确定义的property和parameter的enhanced features。

2. Optional interface broadcast signals

CHI协议包含三组额外的pins管脚,用于决定在ICN上是否将一些特定transactions组进行广播。这些管脚在RN到ICN和ICN到SN接口上可选。这三组额外的broadcast管脚是:

  • BROADCASTINNER and BROADCASTOUTER.
  • BROADCASTCACHEMAINTENANCE and BROADCASTPERSIST.
  • BROADCASTATOMIC.

如果一个组件在interface上实现了这些信号管脚,那么必须确保在Reset释放后,这些信号的值是稳定不变的。
BROADCASTINNER和BROADCASTOUTER分别决定了inner和outer domain transactions是否需要广播。CHI协议要求这两个管脚的值必须一样,当设置为0的时候,inner和outer transactions的所有transactions都必须广播,除了Cache Maintaintenance Operations(CMO)。
BROADCASTCACHEMAINTENANCE和BROADCASTPERSIST接口信号用于有效维护ICN中的downstream caches。该broadcast用于:

  • BROADCASTCACHEMAINTENANCE:1. 置位时,为了维护downstream caches,CMO transactions必须要超过interface被广播至下游;如果BROADCASTPERSIST没有置位,CleanSharedPersist必须要转为CleanShared后,才能广播到下游downstream caches;2. 没有置位时,是否要broadcast Persist CMO(CleanSharedPersist)超过interface是取决于BROADCASTPERSIST信号。
  • BROADCASTPERSIST:1. 置位时,为了维护downstream caches,CleanSharedPersist必须超过ICN被广播;该要求和BROADCASTCACHEMAINTENANCE信号值互相独立;2. 没有置位时,是否需要将Persist CMO广播超过ICN至downstream cache取决于BROADCASTCACHEMAINTENANCE的值,但即时可以广播,也必须转为CleanShared。

这些信号在RN连接到ICN接口上,在RN上是输入信号,ICN是输出信号;在ICN连接到SN接口上,在ICN上是输入信号,在SN上是输出信号。
表1为这些broadcast信号的含义。
BI : BROADCASTINNER.
BO : BROADCASTOUTER.
BCM : BROADCASTCACHEMAINTENANCE.
BP : BROADCASTPERSIST.
表1 CMO broadcast at the interface with unspecified BI and BO
1.png
BROADCASTATOMIC:

  • 置位时,interface允许产生Atomic transactions;
  • 不置位时,interface不允许产生Atomic transactions;

如果RN不需要使用Atomic transactions,RN不需要增加Atomic transactions功能,即便ICN支持;
如果RN支持atomic operations,但是不包含支持atomic operations的执行,那么它必须支持Atomic transactions。

3. Atomic transaction support

对于Atomic transactions,CHI协议有如下需求。

3.1 Request Node support

如果系统不支持Atomic transactions,Requester必须有能力抑制这些Atomic transactions的产生。Requester可以使用BROADCASTATOMIC来决定atomic transactions是否需要被传输。
如果RN不需要使用Atomic transactions,RN不需要增加Atomic transactions功能,即便ICN支持;
如果RN支持atomic operations,但是不包含支持atomic operations的执行,那么它必须支持Atomic transactions。
如果RN既支持执行atomic operations,也支持发送Atomic transactions,那么:

  • 对于Cacheable地址,不管是Snoopable还是Non-snoopable,RN可以在本地执行atomic operation,而不需要在interface上发送atomic transactions。为了达到这个,Requester必须在本地cache获得该地址的数据。

带有cache的Requester在处理访问Snoopable地址空间的Atomic transactions请求时:

  • 如果cacheline是Unique态,那么不需要产生一笔atomic transaction,就可以在本地执行atomic operation;
  • 如果cacheline是Shared态,但不是Dirty,有以下两种方式:1. 产生ReadUnique或CleanUnique来获取该cacheline的Unique态,然后在本地执行atomic operation;2. 失效掉本地的cacheline,然后通过interface发送Atomic transaction到ICN上;
  • 如果cacheline是Shared Dirty态,有以下两种方式:1. 产生ReadUnique或CleanUnique来获取该cacheline的Unique态,然后在本地执行atomic operation;2. 采用WriteBack命令将该cacheline写回memory,无效化本地cacheline,然后通过interface发送Atomic transactions到ICN上;
  • 可选的,除了以上各种,Requester允许发送SnoopMe置位的Atomic transaction操作直接访问ICN,ICN会发送一笔Snoop request给该Requester将cacheline失效掉。
3.2 Interconnect support

ICN对于是否支持Atomic transactions是可选的。Atomic_Transactions property用于指示ICN是否支持Atomic transactions。如果ICN不支持的话,那么所有连接到该ICN的RNs都必须配置为不支持Atomic transactions,采用BROADCASTATOMIC可以达到该目的。
对于支持Atomic transaction的ICN,可以在ICN内的任何节点执行atomic operation,包括将Atomic transaction传递给下游SN去执行。
Atomic transactions不需要支持每个地址空间。
如果对于一个Snoopable地址支持Atomic transactions,那么它们必须支持Snoopable地址空间。
如果一个地址不支持atomic transactions,那么必须回error response。
如果Atomic transaction是访问Device设备,那么必须传播给合适的endpoint slave,但如果该slave配置为不支持Atomic transactions,那么ICN对于atomic transactions的访问必须返回error response。
对于Non-snoopable transactions,atomic transactions必须在:1. 对其它agent可见的节点上处理;2. 在endpoint上处理。
对于Snoopable transactions,ICN可以:1. 在ICN内执行atomic operation,这需要ICN执行合适的Read、Write和Snoop transaction来完成Atomic transaction;2. 如果endpoint slave支持处理Atomic transactions,那么ICN可以将atomic transaction传递给Slave,但是ICN在传递transactions给SN之前,仍然必须执行合适的Snoop和Write transaction。

3.3 Slave Node support

SN是否支持atomic transactions是可选的。Atomic_Transactions property用于指示SN是否支持Atomic transactions。如果对于特定的memory type或地址范围,SN支持atomic transactions,在接收到一笔它不支持的atomic transaction,SN必须返回error response。
————————————————

版权声明:本文为CSDN博主「谷公子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W1Z1Q/article/details/104252613

CHI系列篇


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