最近某開發(fā)嵌入式平臺(tái)的客戶到我們的協(xié)議測(cè)試Open Lab分析底層PCIe的問題。問題癥狀看起來很簡(jiǎn)單,開發(fā)板上DSP主芯片的RC(Root Complex)端通過PCIe鏈路直連M.2 NVMe SSD,讀操作沒有任何問題,但是寫操作會(huì)失敗。前后折騰了6個(gè)多月,最后找到我們實(shí)驗(yàn)室通過SerialTek公司的Kodiak系列PCIe協(xié)議分析儀通過協(xié)議抓包的方式快速解決了問題。
下面是分析的大致步驟和過程。
1.我們先抓取一個(gè)read操作,讀取一個(gè)扇區(qū)512字節(jié)。
從上圖,我們看到,藍(lán)色底色部分是NVMe SSD controller去主內(nèi)存里面拿這個(gè)read command,成功完成。緊接著,SSD controller從NAND拿到數(shù)據(jù)后將這些數(shù)據(jù)通過4個(gè)128byte的memory write寫到主內(nèi)存。
2.我們?cè)賮碜ト∫粋€(gè)write操作,寫一個(gè)扇區(qū)512字節(jié)。執(zhí)行命令后,發(fā)現(xiàn)寫失敗。
從上圖可以看出,SSD controller在時(shí)間戳16.353.876.194.000這一行取到write command后,在藍(lán)色底色這一行報(bào)錯(cuò),Unsupported Request。這一行是SSD controller發(fā)送Memory Read命令到內(nèi)存讀取512byte的數(shù)據(jù),但是被RC端拒絕了。
在問題未仔細(xì)分析之前,我們開始覺得這是否可能和SSD的sector扇區(qū)的block size有關(guān),因?yàn)橐话愣际?12byte,也有1K, 2K, 4K block size的。所以,我們就用ChatGPT先問了一下業(yè)內(nèi)是否有支持256byte sector大小的NVMe SSD。參看下圖。
結(jié)果找到全球只有Micron 一個(gè)M.2 SSD支持。
結(jié)果發(fā)現(xiàn)ChatGPT弄了一個(gè)大烏龍,整個(gè)Micron產(chǎn)品單頁(yè)中確實(shí)出現(xiàn)好多256,但是要么是256GB,AES Key Size 256 Bits,SHA 256,甚至256 sector或者256 words。所以,看來使用ChatGPT來給出建議還不是很靠譜啊。
我們?cè)俅巫屑?xì)來分析該錯(cuò)誤,同時(shí)比對(duì)為什么read command可以成功,但是write command卻失敗了。直觀的對(duì)比發(fā)現(xiàn)可能和Max Read Request Size 有關(guān)。我們查找RC的手冊(cè),發(fā)現(xiàn)它的規(guī)格Spec里面明確寫明RC接受的遠(yuǎn)端device的Max Read Request Size為256byte,但是我們抓包發(fā)現(xiàn)SSD的PCIe memory read request size是512 byte,這個(gè)應(yīng)該就是RC回復(fù)SSD的Unsupported Request的直接原因。
為了驗(yàn)證這個(gè)想法,我們?cè)赗C端在初始化的時(shí)加入一行代碼設(shè)置device端的Max Read Request Size為001 (該字段為3bit, 二進(jìn)制001表示256byte)。然后重新開機(jī)運(yùn)行寫操作,這次寫2048個(gè)字節(jié),結(jié)果成功了。2048個(gè)字節(jié)分解成8次memory read,每次256字節(jié),參見下圖。
至此,問題得到有效解決。當(dāng)然,平時(shí)有的時(shí)候也會(huì)發(fā)現(xiàn)你請(qǐng)求512byte,結(jié)果發(fā)送4次128 byte的情況,就像我們上面的read command一樣,解釋如下。
審核編輯:劉清
-
dsp
+關(guān)注
關(guān)注
554文章
8059瀏覽量
350620 -
NAND
+關(guān)注
關(guān)注
16文章
1697瀏覽量
136511 -
SSD
+關(guān)注
關(guān)注
21文章
2893瀏覽量
117904 -
PCIe接口
+關(guān)注
關(guān)注
0文章
121瀏覽量
9797
原文標(biāo)題:一個(gè)PCIe底層Max Read Request Size問題差點(diǎn)被ChatGPT忽悠了
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PCIE 3.0的接收機(jī)物理層測(cè)試方案
體驗(yàn)紫光PCIE之使用WinDriver驅(qū)動(dòng)紫光PCIE
攜手共進(jìn),合作共贏--全志科技&OPEN AI LAB聯(lián)合發(fā)布會(huì)圓滿舉行!
PCIe Gen 4協(xié)議分析儀的竟然那么強(qiáng)大!
廣和通5G模組FM150-AE順利完成華為Open Lab認(rèn)證測(cè)試
最新PCIe Gen 5 switch芯片已內(nèi)置SerialTek PCIe抓包分析功能
![最新<b class='flag-5'>PCIe</b> Gen 5 switch芯片已內(nèi)置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芯片內(nèi)置的SerialTek PCIe抓包分析功能
![淺析<b class='flag-5'>PCIe</b> Gen 5 switch芯片內(nèi)置的SerialTek <b class='flag-5'>PCIe</b>抓包<b class='flag-5'>分析</b>功能](https://file.elecfans.com/web1/M00/EA/4B/o4YBAGB1Ss6AA5GjAABtoc3IWUY174.png)
力科將推出(PCIe)完整性新協(xié)議分析和流量生成解決方案
解決PCIe協(xié)議驗(yàn)證挑戰(zhàn)
![解決<b class='flag-5'>PCIe</b><b class='flag-5'>協(xié)議</b>驗(yàn)證挑戰(zhàn)](https://file.elecfans.com/web2/M00/4C/64/pYYBAGKu0-eAGCksAAEViofj8Bs574.png)
PCIe5.0, CXL, NVMe, NAND, DDR5, UFS4測(cè)試技術(shù)和工具白皮書Ver 8.0發(fā)布了!
Prodigy Technovations推出功能強(qiáng)大的PCIe Gen5協(xié)議分析儀
![Prodigy Technovations推出功能強(qiáng)大的<b class='flag-5'>PCIe</b> Gen5<b class='flag-5'>協(xié)議</b><b class='flag-5'>分析</b>儀](https://file1.elecfans.com//web2/M00/FF/EF/wKgaomamufeADP_zAAD0llVD_N4136.jpg)
評(píng)論