读操作和写操作


读操作(NREAD)

读操作由一个NREAD事务和一个RESPONSE事务组成,NREAD事务由请求方(Requestor)发起,目标方(Destination)正确的处理请求方发过来的响应以后会给请求方反馈正确的响应以及请求方读取的数据。整个操作的示意图如下所示

image.png 

写操作

1、写操作(NWRITE)和流写操作(SWRITE)

写操作(write operations)和流写操作(streaming-write operations)分别由NWRITE和SWRITE事务组成。请求方可以用这两种事务往目标方指定的地址写入数据。

NWRITE事务允许多个双字(double-word),字(word),半字(half-word)和字节(byte)作为数据负载(Data Payload)进行传输,但前提是必须对数据进行适当的补0(padded)并进行8字节边界对齐。如图为NWRITE数据格式。

image.png 

SWRITE事务相当于用NWRITE事务传输双字(double-word)的情况,并且SWRITE事务具有更少的头部开销(SWRITE事务的包格式中把Ttype,Rdsize/Wrsize和srcTID三个字段全部定义为了Extended Address字段的一部分,所以头部开销变少)。如图为SWRITE数据格式。

image.png 

NWRITE事务和SWRITE事务不需要接收目标方的响应,所以当事务被目标方处理完以后并不会给发起方反馈任何信息。NWRITE事务与SWRITE事务的操作示意图如下图所示

image.png 

2、带响应的写操作(NWRITE_R)

 image.png

带响应的写操作(write-with-response operations)由NWRITE_R(FT=5)事务和RESPONSE(FT=13)事务组成。它的整个请求操作和NWRITE事务的请求操作完全相同,但是在目标方正确处理请求方的NWRITE_R事务以后,目标方会给请求方反馈一个响应包告诉请求方事务已经被正确的处理。这种机制可以有效的保证数据传输的稳定性。NWRITE_R事务的处理流程如下图所示

image.png






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我