最近某開發嵌入式平臺的客戶到我們的協議測試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支持。
結果發現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一樣,解釋如下。
審核編輯:劉清
-
dsp
+關注
關注
554文章
8059瀏覽量
350439 -
NAND
+關注
關注
16文章
1691瀏覽量
136465 -
SSD
+關注
關注
21文章
2887瀏覽量
117860 -
PCIe接口
+關注
關注
0文章
121瀏覽量
9788
原文標題:一個PCIe底層Max Read Request Size問題差點被ChatGPT忽悠了
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
PCIE 3.0的接收機物理層測試方案
體驗紫光PCIE之使用WinDriver驅動紫光PCIE
攜手共進,合作共贏--全志科技&OPEN AI LAB聯合發布會圓滿舉行!
PCIe Gen 4協議分析儀的竟然那么強大!
廣和通5G模組FM150-AE順利完成華為Open Lab認證測試
最新PCIe Gen 5 switch芯片已內置SerialTek PCIe抓包分析功能
![最新<b class='flag-5'>PCIe</b> Gen 5 switch芯片已內置SerialTek <b class='flag-5'>PCIe</b>抓包<b class='flag-5'>分析</b>功能](https://file.elecfans.com/web1/M00/EA/C3/pIYBAGB1SiiAOUs4AAAaY0PJPSQ467.png)
淺析PCIe Gen 5 switch芯片內置的SerialTek PCIe抓包分析功能
![淺析<b class='flag-5'>PCIe</b> Gen 5 switch芯片內置的SerialTek <b class='flag-5'>PCIe</b>抓包<b class='flag-5'>分析</b>功能](https://file.elecfans.com/web1/M00/EA/4B/o4YBAGB1Ss6AA5GjAABtoc3IWUY174.png)
力科將推出(PCIe)完整性新協議分析和流量生成解決方案
解決PCIe協議驗證挑戰
![解決<b class='flag-5'>PCIe</b><b class='flag-5'>協議</b>驗證挑戰](https://file.elecfans.com/web2/M00/4C/64/pYYBAGKu0-eAGCksAAEViofj8Bs574.png)
U4301A PCIE3.0協議分析儀:首款可在AXIe機箱中工作的測量模塊
PCIe5.0, CXL, NVMe, NAND, DDR5, UFS4測試技術和工具白皮書Ver 8.0發布了!
Prodigy Technovations推出功能強大的PCIe Gen5協議分析儀
![Prodigy Technovations推出功能強大的<b class='flag-5'>PCIe</b> Gen5<b class='flag-5'>協議</b><b class='flag-5'>分析</b>儀](https://file1.elecfans.com//web2/M00/FF/EF/wKgaomamufeADP_zAAD0llVD_N4136.jpg)
評論