2.3 snoop
哎呀,没想到项目一忙,这就落下快一年了,但是我还记着呢,我最近想开新的专题了。为了让我可以开新的专题,所以要把这个专题优雅的稍微完整的结束掉啊。努力更新!
温馨提示:我这写的都是野史啊,只是帮助入门理解一下chi。系统性的学还是得啃各种协议,arm协议,chi协议,cache协议。
上回咱们野史说到,我们定义了cache state,还专门的HN搞了个directory来存各个cacheline的cache state,接着要怎么用才能保证一致性呢!
首先还是先介绍一下“单纯”的snoop是一个什么东西呢?按中文的理解呢,我们把它还是叫snoop,对于专用名词不翻译才是最信雅达的翻译。它的作用是这样子的,以下例子不是讲专门chi的,就是普通的soc互联,意思就是其他协议也有snoop:
假设cpu0要读地址addr=0x08的数据,这个数据L01有一份,DDRC里肯定也有一份,但是cpu0不知道这个事情,然后cpu0会发出一个读请求到HN,它会发一个snoop请求给到cpu1,然后cpu1把数据“可以”给HN,然后HN再把数据回给cpu0。
在这里面,按我的理解呢,HN来自cpu0的请求,然后发snoop操作给cpu1的这整个过程叫做snoop。然后HN发给cpu1的请求叫snoop请求,cpu1在这个过程叫做snoopee。