• 正文
  • 相关推荐
申请入驻 产业图谱

一文看懂PCIe和AMBA的deferrable write特性

09/11 13:18
323
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1. PCIe DMWr特性

PCIe 6.0协议新定义了一种DMWr TLP,全称为Deferrable Memory Write,即可延迟的内存写入。DMWr最早是在PCIe 5.0规范中以ECN(工程变更通知)形式定义。此外,在CXL1.1协议也有Deferrable Write的定义。

DMWr是non-posted类型的写请求,Completer必须根据完成情况回复响应。Completer在收到DMWr后,可以立即执行,也可以延迟执行。

DMWr的主要使用场景:在软硬件交互过程中,每个进程都需要一份硬件逻辑来处理,且每个进程一般都需要分配4KB空间以隔离进程。随着进程数量增大,硬件资源空间会不断增大,甚至出现不够用的情况。所以,Intel引入DMWr主要是解决多业务实体(包括进程、业务软件、容器或者虚拟机)同时提交任务给加速硬件工作队列的问题。通过使用共享工作队列(Shared Work Queue,SWQ)就可以解决以上问题。

    对于Intel的CPU,DMWr操作通过ENQCMD或ENQCMDS指令产生。DMWr操作的应答消息通过借用EFLAGS.ZF标志位来体现,ZF=0的时候表示写操作成功,ZF=1的时候表示写操作不成功,需要后续重试。对于ARM CPU,DMWr操作是通过ST64BV指令产生的。ST64BV是带状态结果的single-copy atomic 64字节store指令。

DMWr TLP的length最大可以是64 bytes或者128 bytes,通过Device Capabilities 2寄存器的DMWr Lengths Supported域段来指示。

收到DMWr请求后,Completer根据完成情况可以回复SC(Successful Completion)、RRS(Request Retry Status)、UR(Unsupported Request)、CA(Completer Abort)状态的CPL。若Completer由于某些临时原因暂时无法完成DMWr请求,其可以发送RRS completion。RRS不是一个错误。

Requester在收到RRS后,可以重新发送该请求,但不是必须要重发。Requester可以自定义实现是否要重发,以及什么时候重发。

2. AXI deferrable write特性

AXI协议的WriteDeferrable事务对应PCIe的DMWr。

AXI WriteDeferrable事务的规则如下:

AWSNOOP is 0b10000。

AWDOMAIN is 0b11 (System shareable)。

AWCACHE is Device or Normal Non-cacheable。

Legal combinations of Length x Size are:

1 x 64-bytes

2 x 32-bytes

4 x 16-bytes

8 x 8-bytes

16 x 4-bytes

All bits of WSTRB must be set within the 64-byte container.

AWADDR is aligned to 64-bytes.

AWBURST is INCR.

AWLOCK is deasserted, not exclusive access.

AWATOP is Non-atomic transaction.

AWTAGOP is Invalid.

3. CHI deferrable write特性

CHI总线的WriteNoSnpDef请求对应AXI总线的WriteDeferrable请求,对应PCIe的DMWr TLP。

CHI总线的WriteNoSnpDef支持的响应如下表:

参考:

    【PCIe 6.0】PCIe 6.0 新特性 - DMWr (Deferrable Memory Write) 详解[PCIe新特性] Defferable Memory WriteAXI sepc, CHI spec

相关推荐