Edward 4年前提问
0
5-3 ACE第三部分的一些问题
  1. 讲义57页,举例说明了两个ReadUnique transaction读同一个line的情况,在这个例子中Master 0先拥有这条line,之后因为Master 1的ReadUnique,这条line马上被Invalid。我想请问这种情况下,运行在Master 0上的程序如何能正常执行下去。因为从运行在Master 0上的程序的角度,他发起ReadUnique,并得到了正确的Resp。那这个程序是不是应该认为,想要的数据已经准备好,可以进行下一步。结果这个数据在紧接的cycle被Master 1的ReadUnique请求给Invalid。这样运行在Master 0上的程序该如何执行下去,再发起一次读,可是每次读回来的数据都有可能在使用前被其他master的cache maintain操作Invalid。请问应该如何应对这种情况?

2.请问能够举一个例子说明WACK的必要性。BRESP是总线给出的,比如总线在T0给出BRESP,可能因为中间有Register slice而导致这个BRESP需要经过多个cycle才能传回master,在这期间如果总线发起snoop操作似乎也不会引起什么问题,因为该写的数据总是已经写好了。由此,是不是我们要求总线在发出BRESP前不要去snoop这个master,这样是不是可以不用WACK?

3.关于barrier操作,(1)讲师提到在A53中memory barrier会比sync barrier多走几级pipeline,直到这条command要“retire”了就会停住,请问这里的retire是什么意思?(2) memory barrier是不是只阻止memory访问的操作,像trigger event这样的操作是不会被barrier的?(3) memory barrier与sync barrier的区别是不是就是指memory barrier只阻止memory访问的操作。

4.(1)讲义28页,所讲到的所有的ACE transaction,比如readnosnoop,readnotshareddirty,readonce或是cache maintain,这些操作是不是都是针对D-cache的?(2)请问I-cache里的数据是用什么操作读进来的?以讲义74页的例子来说,Master 0 的 D-cache中把pagetable的内容改变了,然后clean到memory,所以Master 0对自己内部的TLB发起操作Invalid对应的行,并对Master 1发起DVM去Invalid Master 1中同样的行。在这之后,Master 0 或 1是通过什么操作再把Memory中最新的pagetable load进各自的I-cache的呢?

被浏览 :  217
收起
( 0 ) 评论