讲讲ACE协议和CHI协议里的Tag match operation

ACE和CHI协议都支持MTE特性,不过ACE协议里只有ACE5-Lite,ACE5-LiteDVM (Basic only)和AXI5支持MTE,因此其实ACE里无法保证多master之间allocation tag的一致性。只有CHI协议的MTE规范才支持allocation tag的一致性。不过我们这次只讲当tag operation为match的情况下,ACE和CHI的行为。

1. ACE writes with tags and Tag operation is Match

ACE中,当write操作带有logical tag,且AWTAGOP=0b11(Match)时,写操作携带logical tag与allocation tag之间的比较是打算放在下游slave去做。顺便提下logical tag可以理解是request携带的钥匙,allocation tag可以理解是这个address的锁,只有钥匙和锁检查匹配上,address才可以正确的访问。如果不匹配上,通常会报fault给Core,具体是sync还是async的fault,取决于Arm architecture里SCTLR.TCF/TCF0寄存器域段。

从ACE里看到支持tag match operation的write transactions有WriteNoSnoop和Atomic transaction。ACE slave收到tag match operation的request后,需要返回两部分响应:

  • Completion response:用于指示这笔write request已经是可见的。
  • Match response:用于指示logical tag和allocation tag比较是否成功。

这两部分响应使得具有独立data和tag存储的组件能够独立返回响应,也可以将这两部分合成1个响应。另外这两部分响应可以按任意顺序返回的。

如果comp resp和match resp分两次返回

Completion response

Completion response指示当前write操作对其它Master是可见的,且要遵循以下几点规则:

  • BCOMP域段必须为1;
  • BTAGMATCH域段必须为0b01,表示Match operation的结构在match response里;
  • BID必须和AWID一致;
  • 如果支持loopback指示,那么BLOOP域段必须和AWLOOP域段的值一致;
  • BRESP域段可以有OKAY, EXOKAY, SLVERR和DECERR;
  • Completion响应必须遵循正常的response保序规则;
  • 当收到这个响应后,ID值就可以被后续transaction重用了;

Match response

Match response用于指示这笔write操作的tag比较成功与否,如果该笔transaction里所有data transfer上的WTAG都和memory里存的allocation tag匹配上了,那么response是pass。如果transaction里有任何1笔data transfer的WTAG与memory里存的allocation tag不一致,那么response是fail。

Match response必须遵循以下规则:

  • BCOMP域段必须为0;
  • BTAGMATCH域段必须是0b11 (Pass)或0b10 (Fail);
  • BID和AWID的值必须一样;
  • BLOOP域段可以是任意值,不需要和AWLOOP域段的值一样;
  • BRESP域段可以有OKAY, SLVERR或DECERR;
  • Match response没有任何保序要求,它可以超前或被超前其它任何response响应的;

如果comp resp和match resp一块返回

slave可以根据情况将comp resp和match resp打包到一起,并一块返回给master。这样需要遵循以下规则:

  • BCOMP域段必须为1;
  • BTAGMATCH域段必须是0b11 (Pass)和0b10 (Fail);
  • BID和AWID的值必须一致;
  • 如果支持loopback指示,那么BLOOP域段必须和AWLOOP域段的值一致;
  • BRESP域段可以有OKAY, EXOKAY, SLVERR和DECERR;
  • Completion响应必须遵循正常的response保序规则;
  • 当收到这个响应后,ID值就可以被后续transaction重用了;

其实我们看下BCOMP和BTAGMATCH这两个域段的定义:

 我们就可以总结出对于write with tag match operation来说,可能的response有:

 另外一点要注意的是,只要没有返回response错误,那么即使tagmatch表示fail了,write data也仍然会写到slave的memory里去。

 2. CHI writes with tags and Tag operation is Match

在CHI中,当write和atomic transaction操作携带的TagOp值为Match,下游Completer必须返回Tag match operation的结果,这个结果是通过TagMatch response传递的。不管Tag match结果如何,write和atomic transaction都必须正常处理。且就算WriteData被canceled或Tag Match没有执行,也要返回TagMatch response,否则就破坏了CHI协议了。总得来说,下游Completer不仅要返回comp响应,也要根据Tag Match operation的结果,返回TagMatch响应。

在TagMatch response的Resp域段里携带了Tag Match是否成功,它的值根据:

  • 如果不支持MTE,那么必须是Fail;
  • 如果支持MTE,但Tag Match没有被执行,返回Pass。例如Exclusive write fail且Tag match还没有被执行。
  • 如果支持MTE,且Tag Match执行了,要返回精确的执行结果状态。

CHI write操作伴随着tagOp为Match操作时,如果下游slave不支持,那么下游slave可以不等待writedata就返回tagmatch failed信息。如果支持的话,一定要等writedata里的tagOp,因为req和write data channel的TagOp不一致的话,要用write data channel的。

ACE和CHI都支持让下游Completer进行Tag match operation,并返回结果。其中ACE的comp resp和match resp可以分开,也可以一起返回。但是CHI里comp resp和match resp必须分开返回的。CHI里对其的解释是“使用单独的TagMatch响应会增加write和atomic transaction的复杂度和额外消息的开销,但优点是它提供了足够准确的响应机制,且使用单独的TagMatch响应不会导致Comp响应的延迟发送”。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值