Re: [心得] PCIe & NVME Protocol Study

看板Tech_Job作者 (焦糖)時間6月前 (2023/10/12 03:06), 編輯推噓48(4803)
留言51則, 51人參與, 6月前最新討論串3/3 (看更多)
大家好,繼上次分享了幾篇有關PCIE和NVME的文章,陸陸續續又撰寫了幾篇NVME的文章, 這幾年發現,對於剛畢業的新鮮人看spec可能是一個很高的門檻,常常一知半解,後來把 我撰寫的文章丟給他們看後,發現他們其實都能理解原理,所以意外發現撰寫Blog其實也 是可以當作教育訓練的教材,培養人才事半功倍,省時省力,雖然最近景氣不太好 ,不過還是歡迎大家來做SSD controller,以下是文章分享,歡迎大家一起討論 ■原理NVM Express - Admin Command Set Admin Queue主要用來提交"管理和控制Controller行為"的指令,每個command會使用 Opcode來做區別,Admin Queue的create方式為host software會預先allocate一塊 memory buffer,並將buffer base address填入NVMe register的Admin Submission Queue Base register(ASQ)和 Admin Completion Queue Base Address register(ACQ), 這樣host software提交Admin Command的時候,Controller就能從ASQ得知要去哪裡 fetch command回來執行。此篇將詳細介紹提交到Admin Queue的指令集有哪些,且詳細介 紹每個Admin Command的作用為何 https://reurl.cc/OjMNnR ■原理NVM Express - NVM Command Set 在NVM subsystem中,可能會存在多個controllers,每一個controller可能會去存取某些 特定namespace。Namespace由多個logical blocks所組成,而logical blocks是 controller存取data的最小單位。而一個logical blocks的size為何,可以為512 bytes, 1 KiB, 4 KiB…等等,主要透過Identify command的Identify Namespace data structure的內容可以得知。此篇幅將會介紹Namespace的特性和狀態轉變,並且介紹 Namespace與Controller的關係如何透過Namespace Management而關聯起來,最後在介紹 提交到I/O Queue的指令集有哪些和每個I/O Command的作用為何。 https://reurl.cc/x6amAb ■解析 NVM Express - 透過Linux OS 解析M.2 NVMe SSD 由於我撰寫了"原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ)"、"原理NVM Express - Admin Command Set"和"原理NVM Express - NVM Command Set"這三篇文章,只有有了這三篇的基本知識,我們就有足夠的能力可以去解析我們主機 板上任何一個M.2 NVMe device的一些資訊和如何操作它。接下來這篇文章會使用x86系統 並安裝Ubuntu OS,然後隨意安裝市面上的一款M.2 NVMe SSD到主機板上,透過Linux command line的方式來解析此M.2 NVMe SSD的能力和如何透過I/O command去讀寫 namespace,並且提供一些在Linux中非常實用的CLI。 https://reurl.cc/QZRqg2 ※ 引述《Caramel715 (焦糖)》之銘言: : 大家好,我目前任職於某家SSD韌體,主要是負責NVMe Front-end的部分,Front-end主要 : 負責PCIe和NVMe protocol的firmware porting,所以必須study這兩份spec。由於spec : 的內容過於龐大,所以我習慣會用網誌做筆記,一方便怕自己忘記,一方面也可以在遇到 : 問題的時候快速查詢,當然我所寫的都是我對於spec的理解,所以希望有這方面的專家, : 可以討論不同的見解,也歡迎大家討論與指教。 : PCIE: : ■原理PCI Express - LTSSM Equalization狀態機推演 : 由於PCIe通道傳輸的特性,會有所謂的碼間干擾(Inter-Symbol Interference,ISI),而 : 導致資料無法被辨識,且隨著PCIe頻率越來越高,這個問題會更加明顯,因此必須透過 : Equalizer來調整彼此間的訊號,得到比較好的眼圖,搭建起溝通的橋樑,此篇為EQ : LTSSM的推演。 : https://reurl.cc/VjGMzb : ■原理PCI Express - LTSSM 狀態機推演 "Detect -> Polling -> Configuration -> : L0" : PCIe為point-to-point interconnects(點對點的連接),所以就算系統上由多層PCIe bus : 所構成,每個component只要負責與他對面的component之間的link negotiation就可以了 : ,這篇文章主要會推演兩個端點之間的LTSSM是如何從Detect state演進到L0。 : https://reurl.cc/akpd4D : ■簡介PCI Express: Link Training and Status State Machine( LTSSM 狀態機 ) : 由於工作上很容易會遇到PCIe Link上的問題或者我們需要驗證LTSSM state transition : 有沒有符合預期 ,常常需要透過Protocol Analyzer錄製PCIe Trace來進一步分析。此篇 : 主要會介紹Traning Sequence,和各個LTSSM state主要目的為何。 : https://reurl.cc/9Od37x : ■原理PCI Express: Advanced Error Reporting(AER) : Advanced Error Report(簡稱AER)為PCIe 較為強健的錯誤回報機制,在PCI Express? : Base Specification Revision 3.0 的6.2節"Error Signaling and Logging"章節有詳細 : 的介紹整個AER的logging與repoting機制,由於工作上常常遇到Linux Kernel log中,出 : 現AER error訊息,所以又把spec拿出來翻一翻,藉此寫一篇關於AER的機制,方便以後查 : 詢。 : https://reurl.cc/veyva1 : NVME: : ■原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ) : NVMe最基本的communicate架構主要是建立在Submission Queue和Completion Queue, : Host Software透過Submission Queue來提交command讓NVMe Controller執行, : Controller會透過Completion Queue來回報command執行狀況為何。此篇主要介紹NVMe基 : 本架構。 : https://reurl.cc/bkZYVd -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.225.234 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1697051168.A.E31.html

10/12 03:23, 6月前 , 1F
用心給推
10/12 03:23, 1F

10/12 04:23, 6月前 , 2F
值得鼓勵
10/12 04:23, 2F

10/12 04:39, 6月前 , 3F
這比一推廢文好多了,感謝分享
10/12 04:39, 3F

10/12 06:30, 6月前 , 4F
推專業文
10/12 06:30, 4F

10/12 07:36, 6月前 , 5F
不錯 比某些自以為很懂的廢文好太多了
10/12 07:36, 5F

10/12 07:39, 6月前 , 6F
10/12 07:39, 6F

10/12 07:50, 6月前 , 7F
讚喔
10/12 07:50, 7F

10/12 08:09, 6月前 , 8F
這位同學 房租水電費要繳哦
10/12 08:09, 8F

10/12 08:20, 6月前 , 9F
10/12 08:20, 9F

10/12 08:38, 6月前 , 10F
佛心
10/12 08:38, 10F

10/12 08:41, 6月前 , 11F
願意分享 神人給推
10/12 08:41, 11F

10/12 08:43, 6月前 , 12F
用心給推!
10/12 08:43, 12F

10/12 08:58, 6月前 , 13F
10/12 08:58, 13F

10/12 09:11, 6月前 , 14F
10/12 09:11, 14F

10/12 09:14, 6月前 , 15F
佛心C哥推
10/12 09:14, 15F

10/12 09:16, 6月前 , 16F
10/12 09:16, 16F

10/12 09:21, 6月前 , 17F
10/12 09:21, 17F

10/12 09:41, 6月前 , 18F
優質推
10/12 09:41, 18F

10/12 09:47, 6月前 , 19F
謝謝分享!
10/12 09:47, 19F

10/12 09:48, 6月前 , 20F
10/12 09:48, 20F

10/12 09:56, 6月前 , 21F
推分享
10/12 09:56, 21F

10/12 10:15, 6月前 , 22F
推 分享
10/12 10:15, 22F

10/12 10:32, 6月前 , 23F
10/12 10:32, 23F

10/12 10:38, 6月前 , 24F
我也是看你的文章學習PCIE,受用良多
10/12 10:38, 24F

10/12 11:07, 6月前 , 25F
雖然看不懂但感謝分享
10/12 11:07, 25F

10/12 11:09, 6月前 , 26F
推 謝謝整理
10/12 11:09, 26F

10/12 11:14, 6月前 , 27F
看不懂,趕快推一下
10/12 11:14, 27F

10/12 11:16, 6月前 , 28F
感謝
10/12 11:16, 28F

10/12 11:17, 6月前 , 29F
推 對學習基礎非常有幫助 感謝大大
10/12 11:17, 29F

10/12 11:43, 6月前 , 30F
10/12 11:43, 30F

10/12 11:56, 6月前 , 31F
10/12 11:56, 31F

10/12 11:59, 6月前 , 32F
明天竹南報到
10/12 11:59, 32F

10/12 12:05, 6月前 , 33F
先記著,以後有人問直接丟
10/12 12:05, 33F

10/12 12:08, 6月前 , 34F
讚讚讚 推
10/12 12:08, 34F

10/12 12:23, 6月前 , 35F
推推
10/12 12:23, 35F

10/12 12:47, 6月前 , 36F
要來支援收銀嗎
10/12 12:47, 36F

10/12 13:27, 6月前 , 37F
佛 用心給推
10/12 13:27, 37F

10/12 14:27, 6月前 , 38F
推有心
10/12 14:27, 38F

10/12 14:28, 6月前 , 39F
讚讚
10/12 14:28, 39F

10/12 15:08, 6月前 , 40F
優文
10/12 15:08, 40F

10/12 15:12, 6月前 , 41F
10/12 15:12, 41F

10/12 15:39, 6月前 , 42F
文組看不懂怎麼辦
10/12 15:39, 42F

10/12 15:55, 6月前 , 43F
好文推推
10/12 15:55, 43F

10/12 16:59, 6月前 , 44F
10/12 16:59, 44F

10/12 18:28, 6月前 , 45F
10/12 18:28, 45F

10/12 20:03, 6月前 , 46F
10/12 20:03, 46F

10/12 20:10, 6月前 , 47F
超推!
10/12 20:10, 47F

10/13 09:28, 6月前 , 48F
感謝分享
10/13 09:28, 48F

10/13 14:04, 6月前 , 49F
推一下 寫這麼長 算你狠捏~
10/13 14:04, 49F

10/13 18:34, 6月前 , 50F
看不懂 但感謝分享
10/13 18:34, 50F

10/13 23:16, 6月前 , 51F
10/13 23:16, 51F
文章代碼(AID): #1b9l8Wun (Tech_Job)
文章代碼(AID): #1b9l8Wun (Tech_Job)