原子操作:
Atomic操作可以分为两类:
- 一类是返回只有completion响应,有:AtomicStore;
- 一类是返回有completion和Data响应,有:AtomicLoad/AtomicSwap/AtomicCompare;
Atomic传输结果如图13所示:
对于AtomicStore操作,允许Completer分开返回DBID和Comp响应,或组合的CompDBID;对于AtomicLoad/AtomicSwap/AtomicCompare操作,Completer只能返回DBIDResp,Comp是通过CompData返回的;
在分离的Comp和DBIDResp中,Completer不能等待收到Data后才发送DBIDResp,但是允许等到Data之后再发送Comp,如果这样做的话,就可以使用Comp来传递原子操作结果或数据接收是否有错误;
在CompDBID中,Completer不能等待收到Data之后才发送CompDBID响应;Requester在收到DBIDResp活CompDBIDResp之后,就可以发送Data,不能等CompData或Comp响应;
Completer在返回read data时可以采用两种方式:1. 在收到命令之后的任何节点返回Read data;2. 直到收到所有的write data之后再返回read data;