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

接口/总线/驱动

1117人已加入

描述

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的行为。  

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

Chi

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

Chi

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

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响应的延迟发送”。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分