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
323