30

Dskpimc? · 2023年04月14日 · 北京市

讲讲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这两个域段的定义:

image.png

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

image.png

另外一点要注意的是,只要没有返回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响应的延迟发送”。

作者:谷公子
文章来源:CSDN

推荐阅读

更多Arm AMBA 协议集技术干货请关注Arm AMBA 协议集技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
7919
内容数
82
Arm AMBA协议集,APB,AHB,AXI,CHI等相关公开课回放及文章
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息