Re: [心得] PCIe & NVME Protocol Study
大家好,繼上次分享了幾篇有關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
--
用心給推
值得鼓勵
這比一推廢文好多了,感謝分享
推專業文
不錯 比某些自以為很懂的廢文好太多了
推
讚喔
這位同學 房租水電費要繳哦
推
佛心
願意分享 神人給推
用心給推!
推
推
佛心C哥推
推
推
優質推
謝謝分享!
推
推分享
推 分享
推
我也是看你的文章學習PCIE,受用良多
雖然看不懂但感謝分享
推 謝謝整理
看不懂,趕快推一下
感謝
推 對學習基礎非常有幫助 感謝大大
推
推
明天竹南報到
先記著,以後有人問直接丟
讚讚讚 推
推推
要來支援收銀嗎
佛 用心給推
推有心
讚讚
優文
推
文組看不懂怎麼辦
好文推推
推
推
推
超推!
感謝分享
推一下 寫這麼長 算你狠捏~
看不懂 但感謝分享
推
爆
首Po大家好,我目前任職於某家SSD韌體,主要是負責NVMe Front-end的部分,Front-end主要 負責PCIe和NVMe protocol的firmware porting,所以必須study這兩份spec。由於spec 的內容過於龐大,所以我習慣會用網誌做筆記,一方便怕自己忘記,一方面也可以在遇到 問題的時候快速查詢,當然我所寫的都是我對於spec的理解,所以希望有這方面的專家, 可以討論不同的見解,也歡迎大家討論與指教。3
推 caeserhaha : 有沒有人要寫FTL的 04/11 23:36 FTL不像host protocol或是NAND interface是一套公開的規範 所以各公司甚至同公司不同產品之間 可能架構上會有很大的不同 而且FTL早期是不傳之密 XD
爆
[情報] Windows 11系統需求以下都是最低規格 CPU:64位元處理器 RAM:4GB 儲存空間:64GB19
[請益] 面試請益 (台積)大家好,最近有收到兩份面試邀約 想請教各位年薪三百萬們前輩的意見以及兩份職務工作內容 一、 職務名稱: RD Process engineer 工作地點: 竹科19
[心得] Intel D5-P5530 U.2 Gen4 NVMe 1.92TB狼窩2.0無廣告好讀版:(推薦使用電腦瀏覽,網址過長請自行加上https://) wolflsi.blogspot.com/2023/06/intel-d5-p5530-u2-gen4-nvme-192tb-ssd.html 狼窩1.0好讀版: Intel D5-P5530 U.2 Gen4 NVMe 1.92TB SSD產品規格:7
[情報] Seagate揭曉採用NVMe連結規格的HDDSeagate揭曉採NVMe連結規格的機械式硬碟,簡化裝置儲存設備配置、提高儲存容量 -- 在NVM Express (NVMe)協議近期提出2.0規範,並且加入支援傳統硬碟使用之後,Seagate 隨即在開放計算項目大會中公布旗下首款採NVMe介面設計,藉由PCIe通道進行資料傳輸的6
[心得] KIOXIA CD6-R U.3 Gen4 NVMe 3.84T SSD狼窩2.0無廣告好讀版:(建議使用電腦瀏覽) 狼窩1.0好讀版: KIOXIA CD6-R U.3 Gen4 NVMe 3.84T SSD簡測5
[請益] 舊MB用PCI-E擴充卡裝SSD的相容性手上有一台主板為Gigabyte H170N-WIFI的迷你主機 想要把自己電腦上的Pioneer APS-SE20G (Gen3x4 裝到那台主機上 雖然MB有NVME的座,不過在主機板背面不想拆來拆去 想用銀欣的ECM25 PCIe x4轉接卡插在PCIe槽來裝Pioneer的 NVME SSD 這樣是4
[心得] SN640 7.68T更新驅動 循序Q1T1大幅提升順便分享個沒啥用的fw R1110021 <效能似乎沒有變化> 可以用WD Dashboard刷進去 我原本是R1110012,更新後沒什麼變化 就不貼圖了3
[心得] SN640 更新driver 循序Q1T1大幅提升 另FW(R1110021)在這 <效能似乎沒有變化> 可以用WD Dashboard刷進去 我原本是R1110012,更新後沒什麼變化 就不貼了 Driver1
[請益] 企業級 SSD 的 namespace 問題請問 我最近買了個二手企業級 SSD D7-P5500 上家把 namespace size 調整的很小 經過一番學習後, 確定其 tnvmcap 是 7681501126656 (bytes) 如果只想把這個 SSD 當做單一 namespace 的倉庫碟- FW在這 <效能似乎沒有變化> Driver SEQ Q1T1 READ <效能明顯提升> + 0F不會一直增加 <old>