插播:各位对于PCIe/CXL技术感兴趣的朋友,为促进大家相互交流和经验分享,现定于5/13日周六下午,在上海地铁 2号线张江高科站附近的酒店,举办一场线下技术研讨会。届时会有业内的资深人士,介绍CXL协议最新进展,以及PCIe 5.0协议分析、诊断测试方面的经验分享。由于场地有限,感兴趣并确认能参加的朋友,请点击本文左下角的“阅读原文”报名,或者扫描二维码添加微信。
最近某开发嵌入式平台的客户到我们的协议测试Open Lab分析底层PCIe的问题。问题症状看起来很简单,开发板上DSP主芯片的RC(Root Complex)端通过PCIe链路直连M.2 NVMe SSD,读操作没有任何问题,但是写操作会失败。前后折腾了6个多月,最后找到我们实验室通过SerialTek公司的Kodiak系列PCIe协议分析仪通过协议抓包的方式快速解决了问题。
下面是分析的大致步骤和过程。
(资料图)
1.我们先抓取一个read操作,读取一个扇区512字节。
从上图,我们看到,蓝色底色部分是NVMe SSD controller去主内存里面拿这个read command,成功完成。紧接着,SSD controller从NAND拿到数据后将这些数据通过4个128byte的memory write写到主内存。
2.我们再来抓取一个write操作,写一个扇区512字节。执行命令后,发现写失败。
从上图可以看出,SSD controller在时间戳16.353.876.194.000这一行取到write command后,在蓝色底色这一行报错,Unsupported Request。这一行是SSD controller发送Memory Read命令到内存读取512byte的数据,但是被RC端拒绝了。
在问题未仔细分析之前,我们开始觉得这是否可能和SSD的sector扇区的block size有关,因为一般都是512byte,也有1K, 2K, 4K block size的。所以,我们就用ChatGPT先问了一下业内是否有支持256byte sector大小的NVMe SSD。参看下图。
结果找到全球只有Micron 一个M.2 SSD支持。参见下面的链接。
https://www.micron.com/-/media/client/global/documents/products/data-sheet/ssd/m550_m2_2280_ssd.pdf
结果发现ChatGPT弄了一个大乌龙,整个Micron产品单页中确实出现好多256,但是要么是256GB,AES Key Size 256 Bits,SHA 256,甚至256 sector或者256 words。所以,看来使用ChatGPT来给出建议还不是很靠谱啊。
我们再次仔细来分析该错误,同时比对为什么read command可以成功,但是write command却失败了。直观的对比发现可能和Max Read Request Size 有关。我们查找RC的手册,发现它的规格Spec里面明确写明RC接受的远端device的Max Read Request Size为256byte,但是我们抓包发现SSD的PCIe memory read request size是512 byte,这个应该就是RC回复SSD的Unsupported Request的直接原因。
为了验证这个想法,我们在RC端在初始化的时加入一行代码设置device端的Max Read Request Size为001 (该字段为3bit, 二进制001表示256byte)。然后重新开机运行写操作,这次写2048个字节,结果成功了。2048个字节分解成8次memory read,每次256字节,参见下图。
至此,问题得到有效解决。当然,平时有的时候也会发现你请求512byte,结果发送4次128 byte的情况,就像我们上面的read command一样,解释如下。
下图是本次调试用的环境,图中的分析仪是SerialTek公司旗下的Kodiak系列 PCIe 协议分析仪。
关于Saniffer总线协议测试开放实验室
Saniffer上海总线协议分析和测试开放实验室提供业内最完善的协议分析和测试环境,有需要测试的可以扫描本文底部的二维码联系,测试工具涵盖了如下常用总线类型:
PCIe Gen 4/5/6
NVMe 1.4, 2.0, NVMe over Fabric
SAS 12G, SAS/SATA 6G
NAND 400MT, 800MT/1.2GT/1.6GT, 2.0/2.4GT
DDR 4/5, LPDDR 4x/5
FC 32/64G
GE/10GE/40GE/25GE/100GE以太网
UFS 3.0/3.1 & 4.0
eMMC 5.1; SD/SDIO 3.0, SD 4.0
USB 3.0/3.1/3.2/4.0
I3C
SPMI
RFFE
WIFI
… …
如果你对Saniffer上海开放实验室感兴趣,或者希望获得更多测试工具的产品信息和经验分享,请扫描下面的二维码联系我们,或者直接到下面的百度网盘链接下载。
PCIe5.0, CXL, NVMe, NAND, DDR5, UFS4测试技术和工具白皮书Ver 8.2
链接: https://pan.baidu.com/s/1YPmVg0eqWiuKdShm2CYq3Q?pwd=egqt
< 长按识别二维码添加好友>
加入上述群聊
微信号:SSDFans关键词:










